C复习题程序部分.docx
- 文档编号:25555564
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:25
- 大小:19.79KB
C复习题程序部分.docx
《C复习题程序部分.docx》由会员分享,可在线阅读,更多相关《C复习题程序部分.docx(25页珍藏版)》请在冰豆网上搜索。
C复习题程序部分
第三部分写出程序运行结果
说明:
本复习题中规定整型(int)数据占2个字节的存储单元
1、
main()
{
ints1=0,s2=0,i;
for(i=0;i<10;i++)
{
if(i%2)
s1+=i;
else
s2+=i;
}
printf("%d,%d",s1,s2);
}
2、
main()
{
inta[10]={8,19,46,15,6,24,27,18,20,53};
intc1=0,c2=0,i=0;
for(;i<10;i++)
{
if(a[i]>=20)
c1++;
if(a[i]>=20&&a[i]<=50)
c2++;
}
printf("%d,%d\n",c1,c2);
}
3、
main()
{
inta[3][4]={{1,2,7,8},{5,6,11,15},{9,3,19,4}};
intm=a[0][0];
intk1=0,k2=0,i,j;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(a[i][j]>m)
{m=a[i][j];k1=i;k2=j;}
printf("%d%d%d",k1,k2,a[k1][k2]);
}
4、
main()
{
inta=10,b=15;
printf("%d%d",a,b);
{
intb;
a*=4;
b=a+20;
printf("%d%d",a,b);
}
printf("%d%d",a,b);
}
5、
main()
{
intx=20,y=40,*p;
p=&x;
printf("%d",*p);
*p=x+10;
p=&y;
printf("%d\n",*p);
*p=y+20;
printf("%d%d\n",x,y);
}
6、
#include
#include
structWorker
{
charname[15];/*姓名*/
intage;/*年龄*/
floatpay;/*工资*/
}x;
main()
{
char*t="zhang";
intd=38;floatf=493;
strcpy(x.name,t);
x.age=d;x.pay=f;
printf("%s%d%.1f\n",x.name,x.age,x.pay);
}
7、
main()
{
ints=0,i;
for(i=1;;i++)
{
if(s>50)break;
if(i%2==0)s+=i;
}
printf("i,s=%d,%d",i,s);
}
8、
main()
{
chara[]="abcdabcafgaca";
inti1=0,i2=0,i=0;
while(a[i])
{
if(a[i]=='a')i1++;
if(a[i]=='b')i2++;
i++;
}
printf("%d%d",i1,i2);
}
9、
main()
{
inta[9]={2,4,6,8,10,12,14,16,18},i;
for(i=0;i<9;i++)
{
printf("%5d",*(a+i));
if((i+1)%3==0)
printf("\n");
}
}
10、
voidLE(int*a,int*b)
{
intx=*a;
*a=*b;
*b=x;
printf("%d%d\n",*a,*b);
}
main()
{
intx=10,y=25;
LE(&x,&y);
printf("%d%d\n",x,y);
}
11、
intf1(intx)
{
staticintz=3,y=0;
y++;
z++;
return(x+y+z);
}
main()
{
inta=1,k;
for(k=0;k<3;k++)printf("%4d",f1(a));
}
12、
structWorker
{
charname[15];
intage;
floatpay;
};
main()
{
structWorkerx={"wangfan",43,640};
structWorkery,*p;
y=x;
p=&x;
printf("%s%d%.2f\n",y.name,y.age,y.pay);
printf("%s%d%.2f\n",p->name,p->age*2,p->pay+10);
}
13、voidswap(int*a,int*b)
{int*tmp;
tmp=a;
a=b;
b=tmp;
*tmp=4;
}
main()
{inta=3,b=5;
swap(&a,&b);
printf("%d,%d",a,b);
}
14、main()
{inta=0,i;
for(i=0;i<4;i++)
{switch(i)
{case0:
case3:
a+=1;
case1:
case2:
a+=2;break;
default:
a+=3;
}
}
printf("%d\n",a);
}
15、main()
{
inti,j;
for(i=3;i<=12;i++)
{
for(j=2;j<=i-1;j++)
if(i%j==0)break;
if(j>=i)printf("%4d",i);
}
}
16、
main()
{
ints=0,i;
for(i=1;;i++)
{
if(s>50)break;
if(i%2==0)s+=i;
}
printf("i,s=%d,%d\n",i,s);
}
17、
main()
{
chara[]="abcdabcabfgacd";
inti1=0,i2=0,i=0;
while(a[i]!
='\0')
{
if(a[i]=='a')i1++;
if(a[i]=='b')i2++;
i++;
}
printf("%d%d\n",i1,i2);
}
18、
intLB(int*a,intn)
{
ints=1,i;
for(i=0;i s*=*a++; returns; } main() { inta[]={1,2,3,4,5,6,7,8}; intb=LB(a,5)+LB(&a[3],3); printf("b=%d\n",b); } 参考答案: 1、25,20 2、5,4 3、2 2 19 4、101540604015 5、20 40 30 60 6、zhang38493.0 7、i,s=15,56 8、52 9、246 81012 141618 10、2510 2510 11、6810 12、wangfan43640.00 wangfan86650.00 13、4,5 14、10 15、35711 16、i,s=15,56 17、43 18、b=240 第四部分写出函数的功能 1、 floatFI(intn)/*n为大于等于1的整数*/ { floatx,y=0; do { scanf("%f",&x); n--; y+=x*x*x; }while(n>0); returny; } 2、 #include intSG(intx) { inta=sqrt(x); inti=2; while(i<=a) { if(x%i==0)break; i++; } if(i<=a)return1; else return0; } 3、假设结构体类型student中的name域表示姓名,age域表示年龄,pay域表示工资。 structstudentb[10]; voidQA(intn) { inti; for(i=0;i printf("%s%d%d",b[i].name,b[i].age,b[i].pay); return; } 4、 longfac(intn) {longf; if(n<0) { printf("n<0,dataerror! \n"); f=-1; } elseif(n==0||n==1)f=1; elsef=fac(n-1)*n; returnf; } 5、 #include"string.h" voidfunc(char*str) { charm; inti,j; for(i=0,j=strlen(str)-1;i { m=str[i]; str[i]=str[j]; str[j]=m; } printf("%s\n",str); } 6、 voidbubble(inta[],intn) {inti,j,t,temp; for(i=1;i<=n-1;i++) { t=n-i; for(j=0;j<=t-1;j++) if(a[j]>a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } 7、 voidscopy(char*p,char*q) { while(*p! ='\0') { *q=*p; p++; q++; } } 8、 intmax_value(intarray[][4]) {inti,j,max; max=array[0][0]; for(i=0;i<3;i++) for(j=0;j<4;j++) if(array[i][j]>max)max=array[i][j]; returnmax; } 9、 C5_1(inta,intb) {intsum=0,i; if(a<0) {printf("Entererror! "); exit(0);} if(a%2==0)a++; i=a; while(i<=b) {sum=sum+i;i=i+2;} return(sum); } 10、 #include structWorker { charname[15];/*姓名*/ floatpay;/*工资*/ }; voidC5_2(structWorker*p,intn,char*str,floatf) /*p是指向结构体数组的指针,n是数组的长度*/ {inti; for(i=0;i if(strcmp((*p).name,str)==0) (*p).pay=f; } 11、intC5_3(char*p,chars) {intnum=0; while(*p) {if(*p==s)num++; p++;} return(num); } 12、voidC5_4(intk) {inti,a=1,b=1,c; printf("1,1,"); i=3; while(i<=k) {c=a+b; printf("%d,",c); a=b;b=c;i++; } } 参考答案: 1、求出从键盘上输入的n个常数的立方和,并将立方和返回。 2、判断x是否为一个素数(或质数),若是返回1,否则返回0。 3、从键盘上输入n个student结构类型的记录依次保存到一维数组b的对应元素中。 4、用递归方法求n的阶乘。 n<0时提示出错;n=0或n=1时,返回值为1;n>1时,返回值为n乘于n-1的阶乘。 5、使一个字符串按逆序存放。 6、采用冒泡排序的方法对数组a中的n个整数按照从小到大有次序重新排列。 7、将指针变量p指向的字符串复制到指针变量q指向的字符串中。 8、将二维数组array中最大的数组元素赋于max并返回。 9、求a到b间所有奇数的和。 10、p是指向结构体数组的指针,当(*p).name与字符指针str指向的内容相同时,则修改此人的工资。 11、计算一个字符串中给定字符的个数 12、输出1,1,2,3,5,8,13…… 第五部分编写程序 一、设计一个判断输入年份是否为闰年的程序。 main() { intyear,leap=0; printf("Enteryear: "); scanf("%d",&year); if(year%4==0&&year%100! =0||year%400==0) printf("%d: isaleapyear.",year); else printf("%disnotaleapyear.",year); } 二、设计一个打印九九乘法表的程序。 参考答案1: main() { inti,j; for(i=1;i<=9;i++)//打印表头 printf("%4d",i); printf("\n"); for(i=1;i<=36;i++)//打印分隔线 printf("%c",'-'); printf("\n"); for(i=1;i<=9;i++)//打印表体 { for(j=1;j<=9;j++) printf("%4d",i*j); printf("\n");//只在第9个数字后面换行 } } 参考答案2: main() { inti,j,k; printf("*"); for(i=1;i<=9;i++)//打印表头 printf("%4d",i); printf("\n"); for(j=1;j<=9;j++)//打印表体 { printf("%2d",j); for(k=1;k<=j;k++) printf("%4d",j*k); printf("\n");//只在第9个数字后面换行 } } 三、设计一个“计算Fibonacci数列”的程序。 voidnumber_fibonacci(intn) {intm; longfib,fib1=1,fib2=1; printf("%Ld%Ld",fib1,fib2); for(m=3;m<=n;m++) { fib=fib1+fib2; fib1=fib2; fib2=fib; printf("%ld",fib); } return; } main() {intn; scanf("%d",&n); number_fibonacci(n); printf("\n"); } 四、在主函数中任意输入一个整数n,用子函数实现n! ,最终在主函数中输出结果。 floatfact(floatn) { if(n<=1) return1; else return(n*fact(n-1)); } main() { intn; printf("Inputanintegern: "); scanf("%d",&n); printf("%d! =%.0f\n",n,fact(n)); } 五、输入一个大于3的正整数,判断它是不是一个素数。 intprime(intn) {intm; for(m=2;m<=n/2;m++) { if(n%m==0) return(0); } return (1); } main() { intn; printf("输入一个正整数: \n"); scanf("%d",&n); if(prime(n)) printf("%d是素数\n",n); else printf("%d不是素数\n",n); } 六、由用户从键盘输入数组中的5个数,用选择法对数组中5个整数按由大到小排序。 main() { voidselect_sort(intarray[],intn); inta[5],i; printf("entertheoriginlarray: \n"); for(i=0;i<5;i++) scanf("%d",&a[i]); select_sort(a,5); printf("\nthesortedarray: \n"); for(i=0;i<5;i++) printf("%d",a[i]); } voidselect_sort(intarray[],intn) {inti,j,k,t; for(i=0;i { k=i; for(j=i+1;j if(array[j]>array[k])k=j; t=array[k];array[k]=array[i];array[i]=t; } } 七、由用户从键盘输入数组中的5个数,用冒泡法对数组中5个整数按由大到小排序。 main() { voidbubble(intarray[],intn); inta[5],i; printf("entertheoriginlarray: \n"); for(i=0;i<5;i++) scanf("%d",&a[i]); bubble(a,5); printf("\nthesortedarray: \n"); for(i=0;i<5;i++) printf("%d",a[i]); } voidbubble(inta[],intn) {inti,j,t,temp; for(i=1;i<=n-1;i++)/*n个数要比较n-1轮*/ { t=n-i; for(j=0;j<=t-1;j++)/*每轮n-i次两两比较交换*/ if(a[j]>a[j+1]) {temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } 八、用折半查找法查找数列“1,3,5,7,9,11,13”中的某个数。 voidbinary_search(inta[],intx) { intmid,top=0,bot=6,find=0; do { mid=(top+bot)/2; if(x==a[mid]) { printf("找到: %3d,它是a[%d]",x,mid); find=1; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 复习题 程序 部分