华农C语言程序设计实验指导书参考答.docx
- 文档编号:8493066
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:27
- 大小:20.36KB
华农C语言程序设计实验指导书参考答.docx
《华农C语言程序设计实验指导书参考答.docx》由会员分享,可在线阅读,更多相关《华农C语言程序设计实验指导书参考答.docx(27页珍藏版)》请在冰豆网上搜索。
华农C语言程序设计实验指导书参考答
[题目1118:
赋值表达式与赋值语句,写出程序运行结果]
阅读下面程序,写出运行结果:
voidmain()
{floata;
intb,c;
chard,e;
a=3.5;
b=a;
c=330;
d=c;
4
e='\\';
printf("%f,%d,%d,%c,%c",a,b,c,d,e);
}
运行结果为:
3.500000,3,330,J,\
[提示]赋值语句具有类型转换的功能,但可能会改变数据。
3.基本运算
[题目1119:
基本运算,写出程序运行结果]
阅读下面程序,写出运行结果:
voidmain()
{inta,b,c;
floatd=15,e,f;
a=35%7;
b=15/10;
c=b++;
e=15/10;
f=d/10;
printf("%d,%d,%d,%f,%f,%f",a,b,c,d,e,f);
}
运行结果为:
0,2,1,15.000000,1.000000,1.500000
[提示]除法分整除与普通除法之分。
5
[题目1126:
字符的输入与输出]
编程实现由键盘输入一个字符后,在屏幕上输出该字符。
参考程序:
#include"stdio.h"
main()
{charch;
ch=getchar();
putchar(ch);
}
[题目1127:
计算加法]
编程实现由键盘输入一个加法式,输出正确的结果。
(两个加数均为整数)
[第一组自测数据]
参考程序:
#include"stdio.h"
main()
{inta,b;
scanf("%d%*c%d",&a,&b);
printf("%d",a+b);
}
[题目1014:
求圆面积]
参考程序:
#include"stdio.h"
main()
{floatarea,r;
scanf("%f",&r);
area=3.14159*r*r;
printf("%0.2f",area);
}
3
[题目1015:
计算摄氏温度值]
参考程序:
#include
voidmain()
{floatf,c;
scanf("%f",&f);
c=5.0/9*(f-32);
printf("%.2f",c);
}
4
参考程序:
#include"stdio.h"
#include"math.h"
voidmain()
{floata,b;
scanf("%f,%f",&a,&b);
if(fabs(a*a+b*b-1)<1e-3)
printf("Y\n");
elseprintf("N\n");}
}
[题目1017:
求数的位数]
参考程序:
main()
{intn,place;
scanf("%ld",&n);
if(n>99999999)place=9;
elseif(n>9999999)place=8;
elseif(n>999999)place=7;
elseif(n>99999)place=6;
elseif(n>9999)place=5;
elseif(n>999)place=4;
elseif(n>99)place=3;
elseif(n>9)place=2;
elseplace=1;
printf("%ld\n",place);
}
[题目1018:
数的排序]
3,6,9
参考程序:
#include
main()
{inta,b,c,t;
scanf("%d,%d,%d",&a,&b,&c);
if(a>b){t=a;a=b;b=t;}
if(a>c){t=a;a=c;c=t;}
if(b>c){t=b;b=c;c=t;}
printf("%d,%d,%d",a,b,c);
}
参考程序:
#include
main()
{chara,b,c,d,e;
scanf("%c%c%c%c%c",&a,&b,&c,&d,&e);
if(a<='Z'&&a>='A')a=a+32;
if(b<='Z'&&b>='A')b=b+32;
if(c<='Z'&&c>='A')c=c+32;
if(d<='Z'&&d>='A')d=d+32;
if(e<='Z'&&e>='A')e=e+32;
printf("%c%c%c%c%c",a,b,c,d,e);
}
#include"stdio.h"
main()
{inta,b,c,d,e;
scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);
if(a%27==0)printf("YES\n");elseprintf("NO\n");
if(b%27==0)printf("YES\n");elseprintf("NO\n");
if(c%27==0)printf("YES\n");elseprintf("NO\n");
if(d%27==0)printf("YES\n");elseprintf("NO\n");
if(e%27==0)printf("YES\n");elseprintf("NO\n");
}
参考程序:
#include"stdio.h"
main()
{intn;
scanf("%d",&n);
if(n<0)printf("negative\n");
elseprintf("positive\n");
if(n%2==0)printf("even\n");
elseprintf("odd\n");
}
[题目1023:
简单计算器]
参考程序:
#include
intmain()
{floata,b,c;
charop;
scanf("%f%c%f",&a,&op,&b);
switch(op)
{case'+':
c=a+b;break;
case'-':
c=a-b;break;
case'*':
c=a*b;break;
case'/':
c=a/b;break;
default:
printf("error");
break;
}
printf("result=%.2f",c);
}
9
[题目1024:
计算阶乘]
输入正整数n,计算n!
,结果用长整型数表示(注n!
=1*2*3*...*n)
参考程序:
#include
main()
{longi,n=1,a;
scanf("%ld",&a);
for(i=1;i<=a;i++)n=n*i;
printf("%ld\n",n);
}
[题目1025:
计算数列和]
参考程序:
#include
main()
{longn,sum=0,i,t=1;
scanf("%ld",&n);
for(i=1;i<=n;i++)
{sum=sum+t;
t=t+2;
}
printf("%ld\n",sum);
}
或
#include
main()
{longn,sum;
scanf("%ld",&n);
sum=n*n;
printf("%ld",sum);
}
注:
评判系统不对程序实现细节进行分析,只对运行结果进行评测。
[题目1026:
累加一行字符中的数字]
参考程序:
#include
main()
{charc;
ints=0,a;
while((c=getchar())!
='\n')
{if(c>='0'&&c<='9')
{a=c-48;
s=s+a;
}
}
printf("%d",s);
}
11
[题目1029:
求最大公约数]
参考程序:
#include
main()
{longr,m,n,temp;
scanf("%ld,%ld",&m,&n);
while(m!
=0)
{r=n%m;
n=m;
m=r;
}
printf("%ld\n",n);
}
或
#include
main()
{longm,n,t,i,s;
scanf("%ld,%ld",&m,&n);
t=m>n?
n:
m;
for(i=t-1;i>=1;i--)
{if(m%i==0&&n%i==0)
{s=i;break;}
}
printf("%d",s);
}
[题目1030:
字符变换]
参考程序:
#include
main()
{charc;
while((c=getchar())!
='\n')
{if(c>='A'&&c<='Z')
c=c+32;
putchar(c);
}
}
[题目1037:
计算数列和]
参考程序:
#include
main()
{inti,t,n;
floata=2,b=1,s=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{s=s+a/b;
t=a;a=a+b;b=t;
}
printf("%.4f\n",s);
}
[题目1044:
输出最小值]
参考程序:
#include"stdio.h"
main()
{inti,t,min;
scanf("%d",&min);
for(i=1;i<10;i++)
{
scanf("%d",&t);
if(t } printf("%d\n",min); } *[题目1031: 统计单词个数] 参考程序: #include main() {inti,num=0,word=0; charc; for(i=0;(c=getchar())! ='\n';i++) if(c=='')word=0; elseif(word==0) {word=1; num++; } printf("%d",num); } *[题目1042: 百万富翁] 参考程序: #include #include main() {intn,m,i; scanf("%d",&m); for(i=1;i<=38;i++) if(0.01*(pow(2,i-1)-1)-i*m>=0)break; printf("%d",i-1); } 15 (1)进一步熟悉掌握用while语句、do-while语句和for语句实现循环的方法。 [题目1028: 求素数] 。 参考程序: #include #include main() {intm,k,i; for(m=2;m<=200;m++) {k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0)break; if(i>k)printf("%d\n",m); } } [题目1035: 打印菱形] 参考程序: #include"stdio.h" #include"math.h" main() {intn,i,j,k; scanf("%d",&n); for(i=1;i<=2*n+1;i++) {k=abs(n+1-i); for(j=1;j<=k;j++)printf(""); for(j=1;j<=2*n+1-2*k;j++)printf("*"); printf("\n"); } } [题目1038: 打印图案] 参考程序: #include #include main() {intn,i,j,k,h; scanf("%d",&n); for(i=-n+1;i<=n-1;i++) {for(j=0;j printf(""); for(k=1;k<=n-abs(i);k++)printf("%d",k); for(h=n-abs(i)-1;h>=1;h--)printf("%d",h); printf("\n"); } } 17 #include main() {inta[10]; inti; for(i=0;i<10;i++)scanf("%d",&a[i]); for(i=9;i>=0;i--)printf("%d\n",a[i]); } [题目1040: 统计不同数字个数] 参考程序: #include"stdio.h" main() {inta[20]; inti,t,p=0; for(i=0;i<20;i++) {scanf("%d",&a[i]); for(t=0;t if(a[t]==a[i])break; if(t==i) p++; } printf("%d",p); } [题目1062: 打印矩阵] 参考程序: #include main() {inta[3][4],b[4][3],i,j; for(i=0;i<3;i++) for(j=0;j<4;j++) {scanf("%d",&a[i][j]); b[j][i]=a[i][j]; } for(i=0;i<4;i++) {for(j=0;j<3;j++) printf("%d",b[i][j]); printf("\n"); } } *[题目1047: 冒泡排序] 参考程序: #include main() {inta[10]; inti,j,t; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<9;i++) {for(j=0;j<9-i;j++) if(a[j]>a[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;} } for(i=0;i<10;i++) printf("%d",a[i]); } *[题目1046: 计算高精度加法] 参考程序: #include"stdio.h" #include"string.h" main() {inta[100]={0},b[100]={0},c[100]={0}; chars[101]; inti=0,n1=0,n2=0,max=0,e=0; gets(s); n1=strlen(s); for(i=n1-1;i>=0;i--)a[n1-1-i]=s[i]-'0'; gets(s); n2=strlen(s); for(i=n2-1;i>=0;i--)b[n2-1-i]=s[i]-'0'; if(n1>n2)max=n1; elsemax=n2; for(i=0;i<=max;i++) {c[i]=(a[i]+b[i]+e)%10; e=(a[i]+b[i]+e)/10; } if(c[max]>0)printf("%d",c[max]); for(i=max-1;i>=0;i--) printf("%d",c[i]); } *[题目: 找矩阵中的鞍点] 参考程序: #include main() {inti,j,k,a[3][4],max,maxj,flag; for(i=0;i<3;i++) for(j=0;j<4;j++) scanf("%d",&a[i][j]); for(i=0;i<3;i++) {max=a[i][0]; maxj=0; for(j=0;j<4;j++) if(a[i][j]>max) {max=a[i][j];maxj=j;} flag=1; for(k=0;k<3;k++) if(max>a[k][maxj]) {flag=0;break;} if(flag) {printf("%d",max);break;} } if(! flag) printf("NO"); } 22 [题目1121: 定义存贮字符串的字符数组] 在下面程序中填充定义字符数组的语句,使程序完整。 #include"string.h" voidmain() {chars[80];/*定义字符数组s*/ strcpy(s,"abcdefghijklmn"); printf("%s",s); } 参考程序: [题目1123: 字符串的输入与输出] 下面程序实现从键盘读入字符串,然后输出到屏幕,请填充必要的语句。 #include"stdio.h" voidmain() { chars[50]; printf("What'syourname? "); gets(s);/*由键盘读入字符串*/ printf("Yournameis",); printf("%s",s);/*打印字符串*/ } 参考程序: [题目1122: 字符串的合并] 从键盘输入3个字符串(每个字符串以回车符做为结束标志),将3个字符串以输入先后顺序合并到 字符串s中,请填空使用程序完整。 #include"stdio.h" #include"string.h" main() { chars[100]=""; chara[30]; gets(a);strcat(s,a); 23 gets(a);strcat(s,a); gets(a);strcat(s,a); /*可以写多行代码*/ printf("%s",s); } [自测数据] [键盘输入] 123 abc 456 [正确输出] 123abc456 参考程序: [题目1050: 寻找字符串] [提示]方法1: 建立双重循环,外层循环变量指示第一个串的查找起始位置,内层循环从起始位置开始判 断第二个字符中是否出现在此处;方法2: 使用字符串函数strstr()。 参考程序: #include"stdio.h" main() {inti,j; chara[80],b[80]; gets(a);gets(b); for(i=0;a[i]! ='\0';i++) {for(j=0;b[j]! ='\0';j++) if(a[i+j]! =b[j])break; if(b[j]=='\0')break; } if(a[i]! ='\0')printf("%d",i+1); elseprintf("NotFound"); } 24 [题目1059: 函数定义] 下面是使用辗转相除法,求最大公约数的程序,请补充完整程序中函数的定义与调用。 #include"stdio.h" intf(intm,intn) { intr; while((r=m%n)! =0) { m=n; n=r; } returnn; } main() { inta,b,n; scanf("%d%d",&a,&b); printf("%d\n",f(a,b)); } [题目1083: 编写函数计算阶乘] 下面程序实现由键盘读入整数n,计算并输出n! ,请补充完整计算阶乘的函数。 longfanc(inta) {longi,n=1; for(i=1;i<=a;i++)n=n*i; returnn; } voidmain() {intn; scanf("%d",&n); 25 printf("%ld",fanc(n)); } [题目1124: 函数中的变量] 写出下面程序的运行结果: 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)); } 程序运行结果为: 6810 *[题目1084: 编写递归调用函数,实现十进制数转二进制数] 下面程序,实现由键盘输入一个正整数(不大于100000000),输出其对应的二进制数(原码表示)。 请填空: #include"stdio.h" voidfun(inti) {if(i>1) fun(i/2); printf("%d",i%2); } main() {intn; scanf("%d",&n); fun(n); } 26 [题目1091: 交换两数,由大到小输出] 下面程序,交换两数,使两数由大到小输出,请填空 #include"stdio.h" voidswap(int*p1,int*p2) {inttemp; temp=*p1; *p1=*p2; *p2=temp; } intmain() {inta,b;int*pa,*pb; scanf("%d%d",&a,&b); pa=&a;pb=&b; if(a printf("%d%d\n",a,b); } [题目1065: 数组中的指针] 参考程序: #include"stdio.h" main() {printf("19\n"); printf("2016\n"); printf("2000\n"); printf("2016\n"); printf("2004\n"); printf("2016\n"); printf("2036\n"); printf("2020\n"); printf("21"); } [题目1092: 函数实现求字符串长度] 下面程序以指针方式传递参数,由函数实现求字符串长度,请填空完成 #include"stdio.h" #include"string.h" intf(char*p) {returnstrlen(p); } intmain() {chars[80]; inti; scanf("%s",s); i=f(s); printf("%d",i); } [题目1125: 定义结构体类型] / structstudent {charname[20]; charsex; intnum; floatscore; } 28 main() { structstudentstu; scanf("%s",stu.name); scanf("%*c%c",&stu.sex); scanf("%d",&stu.num); scanf("%f",&stu.score); printf("%s\n",stu.name); prin
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华农 语言程序设计 实验 指导书 参考