华农C语言程序设计实验资料.docx
《华农C语言程序设计实验资料.docx》由会员分享,可在线阅读,更多相关《华农C语言程序设计实验资料.docx(31页珍藏版)》请在冰豆网上搜索。
华农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;jprintf("");
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);
printf("