《c语言题库答案》word版.docx_第1页
《c语言题库答案》word版.docx_第2页
《c语言题库答案》word版.docx_第3页
《c语言题库答案》word版.docx_第4页
《c语言题库答案》word版.docx_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章1:判断是否为闰年#include stdio.hvoid main()int year;printf(请输入一个年份:);scanf_s(%d, &year);if (year % 4 = 0) & (year % 100 != 0) | (year % 400 = 0)printf(%d是闰年!n, year);elseprintf(%d不是闰年!n, year);2:输入a,b,c三个数,再按照由小到大的顺序输出/打擂#include stdio.hvoid main()int a, b, c, temp;printf(请任意输入三个整数:);scanf_s(%d%d%d,&a,&b,&c);/注意if并列出现if (a b)temp = a;a = b;b = temp;if (a c)temp = a;a = c;c = temp;if (b c)temp = b;b = c;c = temp;printf(a、b、c三个数按照由小到大的顺序排列之为%d、%d、%dn,a,b,c);3:输出100-999之间的水仙花数。#include stdio.hvoid main()int num, a, b, c;for (num = 100; num = 999; num+)/下面为数字各位数字的提取a = num / 100;b = num / 10 % 10;c = num % 10;if (a*a*a + b*b*b + c*c*c = num)/判断条件printf(%-5d, num);printf(n);4输出101-1000之间的质数。#include stdio.hvoid main()int num, n, i = 0;printf(101到1000以内的质数有:n);for (num = 101; num = 1000; num+)/双重循环,外层为被除数,内层为除数n = 2;while (num%n != 0)n+;if (n = num)/内层if嵌套是为了达到题目要求的每行8个数printf(%-5d, num);i+;if (i % 8 = 0)printf(n);printf(n共有%d个!, i);?5:运输公司运费问题。#include stdio.hvoid main()int s;float d,p,w,f;printf(请输入每吨货物的基本运费p,货物重w和距离s:);scanf_s(%f%f%d,&p,&w,&s);switch (int)(s/250)/强制转化类型,也可以不用,因为/本来就是取整case 0:d = 0;break;case 1:d = 0.02;break;case 2:case 3:case 4:case 5:case 6:case 7:d = 0.08;break;case 8:case 9:case 10:case 11:d=0.1;break;default:d=0.15;break;f=p*w*s*(1-d);printf(总运费为:%5.2f,f);6:分段函数#include stdio.hvoid main()float x, f;printf(请输入x:);scanf_s(%f,&x);if (x = 5)f = 10 * x - 10;else/(x = -5 & x 5)f = 5*x*x+5;printf(f=%fn,f);7:100-1000中17的倍数#include stdio.hvoid main()int num, i = 0;for (num = 100; num = 1000; num+)if (num % 17 = 0)printf(%5d, num);i+;if (i % 5 = 0)/每行5个printf(n);printf(n);8:2/1+3/2+5/3+前20项的和。 #include stdio.hvoid main()int i;double sum=0.0,m=1.0,n=2.0,temp;for (i = 0; i = a&words = A&words =0&words =9)nums+;elseothers+;printf(您输入的字符串中有%d个字母,有%d个数字,其他字符有%d个!n,letters,nums,others);10:2到20之间偶数的阶乘的和。#include stdio.hvoid main()int i, j,sum=0,num;for (i = 2; i = 1; j-)/此处还可以将其写成逆序形式for(j=1;j=i;j+)num*=j;sum += num;printf(2!+4!+6!+8!+10!+12!+14!+16!+18!+20!=%dn,sum);第四章1:10个整数冒泡法排序。#include#define n 10void main()int i,j,c,numn;printf(输入%d个整数n,n);for(i=0;in;i+)scanf(%d,&numi);for(i=0;in;i+)for(j=0;jnumj+1)c=numj+1;numj+1=numj;numj=c;for(i=0;in;i+)printf(%d ,numi);printf(n);?2:数组的倒置。注意此题未达到题目要求正确的请看考试题4.2(VS2012)#include stdio.hvoid main()int num34, i, j;printf(请依次输入这个三行四列的数组中的数:);for (i = 0; i 3; i+)for (j = 0; j 4; j+)scanf_s(%d, &numij);printf(a=n);for (i = 0; i 3; i+)for (j = 0; j 4; j+)printf(%dt, numij);printf(n);printf(nb=n);for (j = 0; j 4; j+)for (i = 0; i 3; i+)printf(%dt, numij);printf(n);printf(n);3:找出输入的10个串中最大的串#include stdio.h#include string.h#define N 10#define SIZE 20void main()char cNSIZE, maxSIZE;int i;printf(请任意输入%d个字符串:n, N);for (i = 0; i N; i+)gets(ci);strcpy(max, c0);for (i = 0; i N; i+)if (strcmp(max, ci) 0)/strcmp(1,2)函数有返回值,12返回1;1=2返回0;12返回-1strcpy(max, ci);printf(最大的字符串为%sn:, max);4:判断字符串是否为回文串#include stdio.h#define N 20void main() char cN; int i, j,n,temp=1; printf(请输入一个字符串:); scanf(%s,&c); for (i = 0; i N; i+) if (ci = 0) n = i; /strlen函数可实现 for (i = 0,j = n - 1; i n,ij;j-, i+) if (ci != cj) temp = 0; break; if (temp = 0) printf(%s没有构成回文串!n,c); else printf(%s构成了回文串!n,c); 5:三维数组#includestdio.hvoid main()int a223 = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 , i, j, t;for (t = 0; t2; t+)/控制面for (i = 0; i2; i+)/控制行for (j = 0; j3; j+)/控制列printf(a%d%d%d=%dt, t, i, j, atij);printf(n);#6:将十个数排序(插入排序)#includevoid main() inta10,i,j,t; printf(Pleaseinput10numbers:);for(i=0;i10;i+)scanf(%d,&ai);for(i=1;i=0&taj;j-)/*在有序序列(下标0i-1)中寻找插入位置*/aj+1=aj;/*若未找到插入位置,则当前元素后移一个位置*/aj+1=t;/*插入位置,完成插入*/printf(Thesortednumbers:);for(i=0;i10;i+)printf(%d,ai);printf(n);#7:折半查找某个数#include#define N 10void main()int aN, m, i, j, index, midindex = -1;int low, high, mid, temp;printf(请输入10个数:);for (i = 0; i = N - 1; i+)scanf(%d, &ai);printf(n请输入要查找的数:);scanf(%d, &m);for (i = 0; i N - 1; i+)index = i;for (j = i; j = N - 1; j+)if (aj aindex)index = j;temp = ai;ai = aindex;aindex = temp;/此处在将输入的数排序low = 0;high = N - 1;while (low amid)low = mid + 1;else if (m amid)high = mid - 1;elsemidindex = mid;break;if (midindex != -1)printf(nfound!);elseprintf(nnot found!);?8:依次提取字符串中的数字#includeint degital(char *a, int b);void main()char a51;int b100, i, j;printf(输入字符串n);gets(a);i = degital(a, b);printf(提取的数字有:n);for (j = 0; j= 0&*a = 9)bi+ = *a - 0;return i;9:系统登录界面#include#includevoid main()char mima13;int time;printf(请输入登录密码(密码不超过12位字符串):n);for (time = 3; time0; time-)gets(mima);if (strcmp(mima, admin) = 0)printf(登录成功!n);break;elseif (time1)printf(密码错误!n);printf(请输入登录密码(密码不超过12位字符串):n);if (time1)printf(n sorry!n);10:输出名字最长的#include#includeint main()/可以用无返回值的(void main)最后就不用return了char name100 = 0 , temp100 = 0 ;int i;printf(请输入10个人的姓名:n);for (i = 0; i10; i+)gets(temp);if (strlen(name) strlen(temp)strcpy(name, temp);printf(%s最长n, name);return 0;第五章#1:最小公倍数#includeint main()int a, b, c;printf(请输入两个数:n);scanf(%d%d, &a, &b);c = a*b;while (a)if (ab)int t = a; a = b; b = t;a %= b;printf(最小公倍数:%dn, c / b);return 0;2:用函数将数组转置#include#define N 4void revert(int aN)/传入了一个二维数组int i, j, t;for (i = 0; iN; i+)for (j = i; j N;j+)t = aij; aij = aji; aji = t;void main()int i, j, aNN;printf(n input 16 integer:);for (i = 0; iN; i+)for (j = 0; jN; j+)scanf(%d, &aij);printf(init data:n);for (i = 0; iN; i+)for (j = 0; jN; j+)printf(%3d, aij);putchar(n);revert(a);printf(revert data:n);for (i = 0; iN; i+)for (j = 0; jN; j+)printf(%3d, aij);putchar(n);3:输出大于平均值的数#include#define N 100int fun(int a, int b, int n)int i, c = 0;float aver1, sum = 0;for (i = 0; in; i+)sum += ai;aver1 = sum / n;for (i = 0; iaver1)bc+ = ai;return c;void main()int xN, yN, num, count;int j, n;printf(Please input the N:);scanf(%d, &num);printf(Input %d integers:n, num);for (j = 0; jnum; j+)scanf(%d, &xj);count = fun(x, y, num);printf(result is:);for (j = 0; jcount; j+)printf(%5d, yj);if (j + 1) % 5 = 0)printf(n);4:计数(有多少个三位数的各位和为5)#includeint fun(int x)/以一个整数来接收si这个整数int t = 0;int x1, x2, x3;x3 = x/100;x2 = x / 10 % 10;x1 = x % 10;if (x1 + x2 + x3 = 5)t = 1;return t;void main()int s10, i,c = 0;printf(nplease input 10 integers:);for (i = 0; i 10; i+)scanf(%d, &si);for (i = 0; i 10; i+)if (fun(si)/fun(si)已经是一个返回值,if(0)不满足条件,不执行if条件一下的语句if(非0)满足条件c+;printf(total number is:%d, c);#5:递归法求阶乘#includeint f(int i);void main()int n;printf(请输入n的值:);scanf_s(%d, &n);printf(n!的值为:%dn, f(n);int f(int i)if (i = 0 | i = 1)return 1;elsereturn i*f(i - 1);?6:将字符串的所有数字变成一个整数#includeint str2int(char *str)int i = 0, rs = 0;char c = 0;while (c = *(str + i) != 0)if (c = 0 & c = 9)rs = rs * 10 + c - 0;i+;return rs;void main()char a10;int i;printf(请输入整型数字字符串:n);gets(a);i = str2int(a);printf(转换后为:%dn, i);7:string copy 函数#includevoid strcpy(char *target, char *src)int i = 0;char c = 0;while (c = *(src + i) != 0)*(target + i) = c;i+;*(target + i) = 0;void main()char a257, b257;printf(请输入源字符串:);gets(a);strcpy(b, a);printf(源字符串:%sn, a);printf(复制后的字符串:%sn, b);8:输出文件扩展名#includeint strlen(char *filename)int i = 0;char c = 0;while (c = *(filename + i) != 0)i+;return i;/可调用strlen函数char *getFileExtName(char *filename)int len = strlen(filename);int i = len - 1, size = 0, j = 0;char *p = NULL;while (i = 0)if (*(filename + i) = .)break;i-;if (i 0)return NULL;size = len - i;p = (char *)malloc(size*sizeof(char);for (j = 0; j size; j+)*(p + j) = filenamei + j + 1;*(p + j) = 0;return p;void main()char s100, *a;printf(输入文件名n);gets(s);a = getFileExtName(s);printf(文件扩展名为:%sn, a);?9:strcmp函数#include#define N 1000int strcmp(char *str1, char *str2)int rs = 0, i = 0;while (*(str1 + i) = *(str2 + i) & *(str1 + i) != 0 & *(str2 + i) != 0)i+;if (*(str1 + i) *(str2 + i)rs = 1;else if (*(str1 + i) *(str2 + i)rs = -1;return rs;void main()int i;char aN, bN;printf(请输入第一个字符串:);gets(a);printf(请输入第二个字符串:);gets(b);i = strcmp(a, b);printf(%dn, i);#10:函数打金字塔#includevoid drawPyramid(int level)int i = 0, j = 0;for (i = 0; i level; i+)for (j = 0; j level - i - 1; j+)printf( );for (j = 0; j 2 * i + 1; j+)printf(*);printf(n);void main()int i;printf(请输入高度:);scanf(%d, &i);printf(结果为:n);drawPyramid(i);第七章1:交换两个数(指针)不能用数组#includestdio.hvoidswap(int*a,int*b)intt; t=*a; *a=*b; *b=t; voidmain()intx,y,*p1,*p2; x=10;y=20; p1=&x;p2=&y; printf(ninitdatex=%d,y=%d,x,y); x=10,y=20; swap(&x,&y); printf(nswapx=%d,y=%d,x,y);?3:每列中最小值的和#include #define N 4#define M 4int SumColumMin(int aNM, int *min)int i, j, t, k, s = 0;for (i = 0; i M; i+)k = 0;for (j = 1; j aji)k = j;printf(%dt, aki);s += aki;*min = s;return s;void main()int aNM;int i, j,sum;printf(请输入16个数字:);for (i = 0; i N;i+)for (j = 0; j M; j+)scanf(%d, &aij);SumColumMin(a, &sum);printf(%d, sum);4:统计字符串中的数字的个数#include void fun(char *a, int *t)int i = 0;doif (*a = 0)i+;a+; while (*a != 0);*t = i;void main()char str80;int c;printf(Please enter the string:);gets(str);fun(str, &c);printf(there are %d numbern, c);5:指定字符出现的次数#include int findchar(char *src, char ch)int i=0;doif (*src = ch)i+;src+; while (*src != 0);return i;void main()char len500;char ch;int i;printf(Please enter the string:);gets(len);printf(Please enter the word you want to find:);scanf(%c, &ch);i=findchar(len, ch);printf(%s of char %c %d times, len,ch,i);?6:反序#include #include #define N 10int invert(int *p)int i,j;for (i = 0; i N / 2; i+) j= pi;/从两端到中间开始倒序pi = pN-i-1;pN-i-1 = j;return 0;void main()int i, j;int aN;printf(Please enter %d integers:,N);for (i = 0; i N; i+)scanf(%d, &ai);invert(a);for (i = 0; i N; i+)printf(%d, ai);?7:反序并计数数字的个数#include #include int func(char *p1)char *p2,ch;p2 = p1;int i,j=0,h=0;doif (*p2 = 0&*p2 = 9)h+;p2+;j+;/用于字符串长度计算可用strlen代替 while (*p2 != 0);for (i = 0; i j / 2;i+)ch = p1i;p1i = p1j - 1 - i;p1j-1-i = ch; return h;void main()char a200;int i,num,j;printf(Please enter the string:);gets(a); num=func(a);j = strlen(a);for (i = 0; i j; i+)printf(%c, ai);printf(nc=%d, num);#8:字符串的插入#include #include void insert(char *s1, char *s2)int len1, len2, f = 0;char *p1, *p2;len1 = strlen(s1);len2 = strlen(s2);p1 = s1;p2 = s1 + len1 - 1;while (*p1 != 0&*p1 != *s2)p1+;if (*p1 != 0)for (; p2 p1; p2-)*(p2 + len2 - 1) = *p2;f = 1;while (*s2)*p1+ = *s2+;if (f)*(s1 + len1 + len2 - 1) = 0;else*(s1 + len1 + len2) = 0;void main()char str1100, str2100;printf(请输入一个字符串:);gets(str1);printf(请输入插入的字符串:);gets(str2);insert(str1, str2);printf(%s, str1);9:提取字符串的数字#include void main()char *p;char a256;int i;printf( Please enter the string:);gets(a);p = a;doif (0 = *p&*p 9 | *(p + 1) 0)printf(n);p+; while (*p != 0);10:strcmp函数(返回两个字符串的ASCLL码差值)#include int mystrcpy(char *p1, char *p2)int s;doif (*p1 != *p2) | (*p1 = 0&*p2 != 0) | (*p2 = 0&*p1 != 0)s = *p1 - *p2;return s;p1+;p2+; while (*p1 != 0 | *p2 != 0);return 0;void main()char len150, len250;printf(Please enter the stringa:);gets(len1);printf(Please enter the stringb:);gets(len2);mystrcpy(len1, len2);printf(The Comparing Result is:%d, mystrcpy(len1, len2);7.11将一个数列的指定段落倒序#includevoid fun(int *a,int m,int n);#define s 10void main()int a10,i,m,n;printf(输入%d个数n,s);for(i=0;is;i+)scanf(%d,&ai);printf(输入需要倒序的端点位置n);scanf(%d%d,&m,&n);fun(a,m,n);for(i=0;is;i+)printf(%d ,ai);printf(n);void fun(int *a,int m,int n)int t,i,j;i=m-1;j=n-1;/j=m-1+n-1while(ij)t=*(a+i);*(a+i)=*(a+j);*(a+j)=t;i+;j-;7.12用指针实现字符串的3个基本函数的功能#includevoid strcpy(char *target,char *src)do*target=*src;src+;target+;if(*src=0)*target=0;break;while(1);int strcmp(char *str1,char *str2)int c;doif(*str1*str2)|(*str1!=0)&(*str2=0)c=1;break;else if(*str1 %sn,a,b);elseprintf(%s %sn,a,b);第八章8.1手机通讯录100人#include#define n 100struct ppiin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论