1、统计各年龄段人数。N个年龄通过调用随机函数获取,编写函数把0~9岁年龄段的人数放入数组下标[0]中,把10~19岁年龄段的人数放入数组下标[1]中,以此类推,把100~120岁年龄段的人数放入数组下标[10]中。

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int a[100000];
int b[11];
int main()
{int N;scanf("%d",&N);srand(time(0));int i;for(i=0;i<N;i++){a[i]=rand()%121;}for(i=0;i<N;i++){if(a[i]<=120&&a[i]>=100)b[10]++;else b[a[i]/10]++;}for(i=0;i<11;i++)printf("%d ",b[i]);return 0;
}

2、求素数。编写一个函数,将大于整数m且紧靠m的k个素数存入数组中,在命令行输入m和k。如输入17和5,输出19,23,29,31,37。

#include <stdio.h>int fun(int n)  //定义函数
{int i, l;for (i = n + 1; ; i++)  //第一层循环,从给的数一个个往上推{for (l = 2; l < i; l++)  //对每一个从第一层循环输入的数,开始从2除到i-1{if (i % l == 0)  //如果有可以整除的break;  //就退出这个循环,返回第一个循环}  //然后i自增1,循环再次开始if (l >= i)  //当i是一个素数,第二层循环不会熔断,就进行到这里return i;  //返回这一个i的值}  //结束循环
}int main()
{int m;int k;int a[100];//新建一个数组来存放这一系列的数据printf("请输入整数m:");scanf("%d",&m);  //输入一个数,这个数的值同时给到i和kprintf("请输入k:");scanf("%d", &k);a[0] = fun(m);for (int i = 1; i <= k; i++){a[i] = fun(a[i - 1]);//在k这一范围内反复迭代算出后面一个素数}for (int i = 0; i < k; i++){printf("%3d", a[i]);  //输出fun(m)的返回值}return 0;}

10、编写合并整数数组的函数。数组a[M]中有m个元素(m<M),数组b[N]中有n个元素(n<N),且m+n≤M,将a、b两个数组按存放的整数升序排序并合并放入数组a中。

#include<stdio.h>
const int N=1e5,M=1e5;
int a[N],b[M];
void add(int a[],int b[],int n,int m)
{for(int i=n,j=0;j<m;j++,i++)a[i]=b[j];for(int i=0;i<n+m-1;i++){for(int j=0;j<n+m-i-1;j++){if(a[j]>a[j+1]){int t=a[j];a[j]=a[j+1];a[j+1]=t;}}}}
int main()
{int n,m;scanf("%d%d",&n,&m);for(int i=0;i<n;i++)scanf("%d",&a[i]);for(int i=0;i<m;i++)scanf("%d",&b[i]);add(a,b,n,m);for(int i=0;i<n+m;i++)printf("%d ",a[i]);return 0;}

12、 数组插入问题。生成一个10元素构成的一维数组,数组元素由用户随机输入。要求:先按照升序排列并输出。再输入一个数,按照升序的规律将其插入并输出。

#include<stdio.h>
int a[11];
void quick_sort(int a[],int l,int r)
{if(l>=r)return ;int i=l-1,j=r+1;int x=a[l+r>>1];while(i<j){do i++;while(a[i]<x);do j--;while(a[j]>x);if(i<j){int t=a[j];a[j]=a[i];a[i]=t;}}quick_sort(a,l,j);quick_sort(a,j+1,r);
}
int main()
{printf("请输入十个元素:");for(int i=0;i<10;i++)scanf("%d",&a[i]);quick_sort(a,0,9);for(int i=0;i<10;i++)printf("%d ",a[i]);printf("请再输入一个元素:");scanf("%d",&a[10]);quick_sort(a,0,10);for(int i=0;i<11;i++)printf("%d ",a[i]);return 0;}

14、链表操作。建立单向int链表,连续输入5个结点创建链表,并实现在原链表中插入数字、删除数字、查找数字的功能。

#include<stdio.h>
#include<stdlib.h>typedef struct node
{int data;//数据部分struct node* next;//指针部分
}Node;typedef Node List;//初始化链表
List* initList();//销毁链表
void destoryList(List* list);//插入数据
void insertData(List* list, int Data);//删除数据
void removeData(List* list, int Data);//查找数据
Node* findData(List* list, int Data);//打印链表内容
void printList(List* list);int main()
{//初始化链表List* list = initList();//插入数据for (int i = 0; i < 5; i++){printf("请输入链表第%d个元素:", i+1);int ins; scanf("%d", &ins);insertData(list, ins);}
loop:printf("链表内容为:");printList(list);printf("请选择你想要进行的功能\n1.插入\n2.查找\n3.删除\n4.退出\n请输入你的选择(1-4):");int ipt=0; scanf("%d", &ipt); //输入字符会出错switch (ipt)                  //建立一个switch选择结构来选择功能{case 1:goto Ins;break;case 2:goto Find;break;case 3:goto Del;break;case 4:goto End;break;default:printf("输入错误!");system("pause");         //显示错误信息system("cls");           //清屏goto loop;break;}
Ins://插入数据int k; printf("请输入要在结尾插入的数:");scanf("%d", &k);insertData(list, k);printf("插入后的链表内容为:");printList(list);system("pause");system("cls"); goto loop;
Find://查找数据int n; printf("请输入要查找的位置");scanf("%d", &n);printf("%d的地址:%p\n", n,findData(list, n));system("pause");system("cls");goto loop;
Del://删除数据int m; printf("请输入要删除的位置:");scanf("%d", &m);removeData(list, m);printf("删除后的链表内容为:");printList(list);system("pause");system("cls");goto loop;
End://销毁链表destoryList(list);return 0;
}//初始链表
List* initList()
{List* list = (List*)malloc(sizeof(Node));list->data = 0;list->next = NULL;return list;
}//销毁链表
void destoryList(List* list)
{Node* pHead = list;//用来记录初始化的链表头结点while (list != NULL){//先移到下一个结点list = list->next;//释放头结点free(pHead);//记录新的头结点pHead = list;}
}//插入数据(一般都在表尾插入数据)
void insertData(List* list, int Data)
{//先分配一个新的结点Node* pNode = (Node*)malloc(sizeof(Node));pNode->data = Data;pNode->next = NULL;//将新结点链接到到尾部while (list->next != NULL){list = list->next;//先找到链表的尾结点}list->next = pNode;//将新结点链接到尾结点
}//删除数据(头结点不可删除,不然后面的结点就无法再进行遍历了)
void removeData(List* list, int Data)
{//1.查找结点,并记录上一个结点//Node *pPre = NULL;Node* pPre = list;list = list->next;//跳过头结点while (list != NULL){if (list->data == Data){break;}pPre = list;list = list->next;}if (list != NULL){//2.找到后,将上一个结点和当前结点的下一个结点链接pPre->next = list->next;//3.删除当前结点free(list);}
}//查找数据
Node* findData(List* list, int Data)
{while (list != NULL){if (list->data == Data){break;}list = list->next;}return list;
}//打印链表内容
void printList(List* list)
{list = list->next;//跳过头结点while (list != NULL){printf("%5d", list->data);list = list->next;}printf("\n");
} 

16、统计频率。读入一个文件,文件中包含字母,数字,空格,标点符号等。请统计文件中的字母,数字,空格和其他符号的数目,在屏幕上显示。

#include<stdio.h>
int a[4];
int main()
{FILE *fp;fp=fopen("D:\\a.txt","r");char s[100];while( fgets (s, 100 , fp)!= NULL )fclose(fp);for(int j=0;s[j];j++){int i=s[j]-'\0';if(i==32)a[2]++;else if((i>=65&&i<=90)||(i>=97&&i<=122))a[0]++;else if(i>=48&&i<=57)a[1]++;else a[3]++;}printf("字母个数:%d\n",a[0]);printf("数字个数:%d\n",a[1]);printf("空格个数:%d\n",a[2]);printf("其他符号个数:%d\n",a[3]);return 0; }

17、 字符串次数问题。编写函数统计给定字符串在文中出现的次数,如文件中内容为asd asasdfg asd as zx67 asd mklo,给定字符串为as,则函数返回6。文件名和给定字符串由命令行输入得到。

#include <stdio.h>
#include <string.h>int check(char* a, char* b) {int count = 0;for (int i = 0; i < strlen(a); i++)  //第一层循环遍历a数组{for (int j = 0; j < strlen(b); j++)  //第二层循环遍历b数组{if (a[i] == b[j]) //在a中找到和b第一个字符一样的位置{do{count++;    //计数器+1i++, j++; } while (a[i] != b[j]);//验证a[i+1]和b[i+1]是否相等,若相等继续循环,不相等退出循环}}}return count;
}int main() {char sourceName[100] = { '\0' };//从命令行输入源文件名 printf("输入源文件文件名:");scanf("%s", sourceName);char a[100] = { '\0' };//安全地初始化字符数组char b[] = { '\0' };printf("请输入要查找的字符串:");scanf("%s", &b);FILE* fp1;  //建立一个file类型的指针fp1 = fopen(sourceName, "r");  //以只读方式打开源文件fscanf(fp1, "%[^\n]%*c", a); //将文件中的字符串读取到数组中, "%[^\n]%*c" 可以让scanf读取空格 fclose(fp1);  //关闭外部文件printf("%d", check(a,b));  //输出计数器中的值return 0;
}

18、统计字母个数。读取文件中的字符串,统计从“a”到“z”26个字母各自出现的次数,并将结果放入数组中。如文件中有字符串abcdefgabcdeabc,输出33322110000000000000000000。

#include<stdio.h>
int a[26];
int i;
int main()
{FILE *file;file=fopen("D:\\a.txt","r");char ch[100000],c;fscanf(file,"%s",ch);for(int i=0;ch[i];i++)a[ch[i]-'a']++;for(int i=0;i<26;i++)printf("%d",a[i]);fclose(file);return 0;
}

22、 删除字符。从源文件中读取字符,编写函数将指定字符从文件中删除,结果写入目标文件中,文件中的字母不区分大小写。源文件文件名、目标文件文件名、指定字符均从命令行得到。如源文件中内容为source.txt,指定字符为n,目标文件中内容为output.txt。注意需要用命令行输入参数。

#include <stdio.h>
#include <string.h>void delchar(char* str, char ch)  //删去指定字符
{char* p = str;while (*str)  //遍历字符串 {if (*str != ch)   //跳过 指定字符 *p++ = *str;str++;}*p = '\0';
}char trans(char ch)  //大小写转换
{if (ch >= 'a' && ch <= 'z')//如果是小写换成大写 ch = ch - 32;else if (ch >= 'A' && ch <= 'Z')//如果是大写换成小写 ch = ch + 32;return ch;
}int main() {char sourceName[100] = { '\0' };//从命令行输入源文件名 ,初始化为换行符printf("输入源文件文件名:");scanf("%s", sourceName);char outputName[100] = { '\0' };  //从命令行 输入目标文件名  ,初始化为换行符printf("输入目标文件文件名:");scanf("%s", outputName);char a[100] = { '\0' };//初始化为换行符 以免strlen()计算长度错误 char b;printf("请输入指定字符:");//从命令行输入指定字符 scanf("%s", &b);FILE* fp1;  //建立两个file类型的指针FILE* fp2;fp1 = fopen(sourceName, "r");  //以只读方式打开源文件fscanf(fp1, "%[^\n]%*c", a); //将文件中的字符串读取到数组中, "%[^\n]%*c" 可以让scanf读取空格 fclose(fp1);  //关闭外部文件delchar(a, b);       //删去对应输入字符delchar(a, trans(b));//删去对应字符的大/小写转置fp2 = fopen(outputName, "wt+");//新建并以读写方式打开目标文件 for (int i = 0; i < strlen(a); i++)//将字符数组写入文件中 {fprintf(fp2, "%c", *(a + i));}fclose(fp2);//关闭外部文件return 0;

24、哥德巴赫猜想验证。验证1000以内的正偶数都能够分解为两个素数之和

#include<stdio.h>
int a[1000];
int idx;
int main()
{for (int i = 2; i <= 1000; i++){int  t = 1;for (int j = 2; j <= i / 2; j++){if (i % j == 0){t = 0; break;}}if (t)a[++idx] = i;}a[0]=1;int  b = 1,l,r;for (int i = 2; i <= 1000; i += 2){for(l=0,r=idx;l<=idx&&r>=0;l++){while(a[l]+a[r]>i)r--;if(a[l]+a[r]==i)break;}if(l>r){b=0;break;}}if (b)printf("1000以内的正偶数都能够分解为两个素数之和");else printf("错误");return 0;
}

25、分数比较问题。比较两个分数的大小。

#include<stdio.h>
int main()
{int a,b,c,d;printf("请按照a/b的格式输入两个分式\n");scanf("%d/%d",&a,&b);scanf("%d/%d",&c,&d); int m=a*d;int n=b*c;if(m>n)printf("%d/%d>%d/%d",a,b,c,d);else if (m<n)printf("%d/%d<%d/%d",a,b,c,d);else printf("%d/%d=%d/%d",a,b,c,d);return 0;
}

笔者写下这篇文章以帮助同学们完成程序设计实习题目,由于时间关系来不及写注释。

另在此感谢于学长提供的部分题目的题解。

希望各位同学能够完美地完成此次实习。

如文章中的题解有错误或者有不懂得地方,可以联系qq:3357607649。

感谢各位同学的支持。

关于程序设计语言实习题目的题解相关推荐

  1. 南京林业大学程序设计语言实习题解

    最近学校在搞C语言的实习(其实就是做题),特分享一下我的做题思路,虽然写的有些屑,但希望能帮到同学们. 模块1(选2题) 1.输入两个正整数m和n,求其最大公约数和最小公倍数. #include &l ...

  2. 839c程序设计语言kr,华东师范大学839数据结构(含c程序设计语言)考研

    考研专业课笔记是各高校本科生的听课笔记,内容详实可靠,重点突出,极其有效地体现了该门课程的教学重点和授课导师的讲课内容.笔记一般30页-120页. 华东师范大学839数据结构(含c程序设计语言)笔记为 ...

  3. c语言程序设计上机考试占多少分,C语言程序设计上机考试题目汇编.doc

    C语言程序设计上机考试题目汇编 C语言程序设计上机考试题目汇编 1.编写程序对ss字符中所有下标为奇数位置上的字母为大写 2.编写程序对指定字符在字符串a中出现的次数进行统计, 统计的数据存到b数组中 ...

  4. c语言程序设计中北大学,《中北大学软件学院2013届C语言程序设计实训题目.doc...

    <中北大学软件学院2013届C语言程序设计实训题目 C语言程序课程设计题目 (孟龙)题目1:年历显示 功能要求: 输入一个年份,输出是在屏幕上显示该年的日历.假定输入的年份在1940-2040年 ...

  5. c语言程序设计实践课选题,c语言程序设计实践实验题目

    c语言程序设计实践实验题目 绥化学院程序设计实践实验报告范例 参考1实验题目:循环结构程序设计实验目的:1.熟悉 VC++6.0 的运行环境,掌握 C 程序的执行方法:2.掌握三种基本数据类型.部分运 ...

  6. c语言中如何打出草花图案,C语言程序设计程设计题目1.doc

    C语言程序设计程设计题目1 通信工程10级C语言课程设计任务书 各位同学可以自由组合,不超过以下题目中所规定的人数进行选题(不允许重复选题). 辅导时间:另定 地点:软件中心(语音楼8楼) 答辩检查时 ...

  7. c语言程序设计上机考试题,C语言程序设计上机考试题目汇编..doc

    C语言程序设计上机考试题目汇编. C语言程序设计上机考试题目汇编 1.编写程序对ss字符中所有下标为奇数位置上的字母为大写 2.编写程序对指定字符在字符串a中出现的次数进行统计, 统计的数据存到b数组 ...

  8. c/c++语言程序设计题库,CD2_计算机实践《C/C++语言程序设计》_题目列表.doc

    CD2_计算机实践<C/C语言程序设计>_题目列表 C语言程序设计计算机实践题目 [2011.6修订] A类-简单题 [最高分80,良好]1 B类-中等难度题 [最高分90,优秀]4 C类 ...

  9. 中北c语言程序设计,中北大学软件学2013届C语言程序设计实训题目.doc

    中北大学软件学2013届C语言程序设计实训题目 C语言程序课程设计题目 (孟龙)题目1:年历显示 功能要求: 输入一个年份,输出是在屏幕上显示该年的日历.假定输入的年份在1940-2040年之间. 输 ...

最新文章

  1. 【Python】安利 3 个 pandas 数据探索分析神器!
  2. SE81 - Application hierarchy CSS component tree
  3. python3中round的用法_Python 3标准库用法--reversed、round、set
  4. P12 | N-path filter (ISSCC2021 JSSC-2011-03)
  5. Linux下WebLogic漏洞补丁包安装过程
  6. 泛微协同办公系统移动服务器,泛微协同办公平台Ecology系统重装迁移指导手册.pdf...
  7. 虚拟机(VMWARE)安装的系统如何访问本地磁盘
  8. 动态网络社区检测概述
  9. java多线程并发测试工具_java线程并发工具类CyclicBarrier、CountDownLatch及Semaphore
  10. 颜色所代表的人的性格
  11. [论文阅读笔记12]An Effective Transition-based Model for Discontinuous NER
  12. jq 截取字符串后四位
  13. PC时代的20位英雄
  14. python自动翻译导学案_变量python学案
  15. Win11WSA无法启动的解决办法
  16. .removeAttribute is not a function
  17. 下载xampp之后还用下载PHP吗,PHP 下载并安装XAMPP
  18. 区块链开发工程师和人工智能算法工程师,哪个会在未来 5 年收入更高?
  19. 【论文翻译】HCGN:面向集体分类的异构图卷积网络深度学习模型
  20. 图案设计灵感怎么写_服装设计灵感怎么写

热门文章

  1. Python中将True/False 转换成 1/0 的方法
  2. 爬虫数据解析的三方式
  3. 安大计算机与南邮,安徽大学计算机研究生和南京邮电大学研究生哪个好,安大是211,南邮不是,主要从就业角度考虑,哪个...
  4. 通用蓝牙打印安卓_宣布通用打印:基于云的打印解决方案
  5. 基于SF1565的120W反激式开关电源设计
  6. 2021-2027全球与中国金属化陶瓷基板市场现状及未来发展趋势
  7. AutoCAD 2022 for Mac v2022(24.1.50.899)中文版介绍
  8. 支付宝联合我的天科技 AR技术助力杭州海外参展
  9. 南方科技大学计算机导论题目,南方科技大学自主招生试题及测试要求
  10. Burp抓取HTTPS包的设置