湖南科技大学C语言上机题库.docx
《湖南科技大学C语言上机题库.docx》由会员分享,可在线阅读,更多相关《湖南科技大学C语言上机题库.docx(55页珍藏版)》请在冰点文库上搜索。
湖南科技大学C语言上机题库
第一套
1、设计一个程序,从键盘输入3个整数,按由大到小的顺序输出。
#include
main()
{
inta,b,c,t;
printf("请输入3个整数(用逗号分开):
");
scanf("%d,%d,%d",&a,&b,&c);
if(a
{
t=a;a=b;b=t;
}
if(b{
t=b;b=c;c=t;
}
if(a
{
t=a;a=b;b=t;
}
printf("%d,%d,%d\n",a,b,c);
}
2、求1+3+5+7+……+95+97+99的和。
#include
main()
{
intn,sum=0;
for(n=1;n<100;)
{
sum=sum+n;
n=n+2;
}
printf("%d\n",sum);
}
3、写一个函数,从键盘输入一个整数,如果该整数为素数,则输出“此整数为素数”,否则输出“整数非素数”。
(要求从主函数输入整数)
#include
#include
main()
{
intx,n,flag=1;
scanf("%d",&x);
for(n=2;n<=x-1;n++)
if(x%n==0)
flag=0;
if(flag==1)
printf("%d是素数\n",x);
else
printf("%d不是素数\n",x);
}
第二套
4、从键盘输入10个整数,保存在一个数组中,将这10个数逆序输出,然后求出这10个数的和并输出。
#include
main()
{
shorti,a[10],total=0;
printf("请连续输入10个整数(空格分开):
\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("这10个整数逆序输出得:
\n");
for(i=9;i>=0;i--)
printf("%5d",a[i]);
for(i=0;i<10;i++)
total=total+a[i];
printf("\n这10个整数的和为:
%d\n",total);
}
5、输入n个国家的英文名,要求按字母先后顺序,并按照顺序输出。
#include
#include
main()
{
char*nation[]={"China","Russia","France","England","Japan","UnitedStatesOFAmerice","Australia"};
inti,m;
voidsort(char*name[],int);
m=sizeof(nation)/sizeof(char*);
sort(nation,m);
for(i=0;iprintf("%9s\n",nation[i]);
}
voidsort(char*name[],intn)/*选择排序*/
{
char*t;
inti,j,k;
for(i=0;i{
k=i;
for(j=i+1;jif(strcmp(name[k],name[j])>0)
k=j;/*第j个元素更小*/
if(k!
=i)/*最小元素是该趟的第一个元素,则不需要交换*/
{
t=name[i];name[i]=name[k];name[k]=t;
}
}
}
#include
#include
voidmain()
{
inta,b;
charc[5][20],d[20];
for(a=0;a<=4;a++)
scanf("%s",c[a]);
for(a=0;a<=4;a++)
for(b=a;b<=4;b++)
{
if(c[b][0]<=c[a][0])
{
strcpy(d,c[a]);
strcpy(c[a],c[b]);
strcpy(c[b],d);
}
}
for(a=0;a<=4;a++)
printf("%s\n",c[a]);
}
6、某年级共有4个班,每班各有30名学生,有6个科目的考试成绩,要求输出每门课程最高分的学生的班级、学号和姓名,并计算各班每个学生的平均成绩并输出。
#include
#defineN14
#defineN230
#defineN36
main()
{
floatscore[N1][N2][N3],studav[N1][N2];
inti,j,k;
floatsum;
for(i=0;ifor(j=0;jfor(k=0;k{
printf("请输入%d班学号为%d的科目%d成绩"
"score[%d][%d][%d]:
",i+1,j+1,k+1,i,j,k);
scanf("%f",&score[i][j][k]);
}
for(i=0;ifor(j=0;j{
sum=0;
for(k=0;ksum=sum+score[i][j][k];
studav[i][j]=sum/N3;
printf("%d班学号为%d的学生的平均成绩studav[%d][%d]为:
"
"%f\n",i+1,j+1,k+1,studav[i][j]);
}
}
第三套
7、求从键盘上输入10个数据(实数)中的最大值,并求和。
#include
main()
{
floata[10],sum=0;
inti,maxi;
printf("请输入十个的实数:
\n");
for(i=0;i<10;i++)
scanf("%f",&a[i]);
maxi=0;
for(i=1;i<10;i++)
{
if(a[i]>a[maxi])
maxi=i;
}
printf("%f\n",a[maxi]);
for(i=0;i<10;i++)
sum=sum+a[i];
printf("%f\n",sum);
}
#include
main()
{
floata[10],sum=0,max;
inti;
printf("请输入十个的实数:
\n");
for(i=0;i<10;i++)
scanf("%f",&a[i]);
max=a[0];
for(i=1;i<10;i++)
{
if(a[i]>max)
max=a[i];
}
printf("%f\n",max);
for(i=0;i<10;i++)
sum=sum+a[i];
printf("%f\n",sum);
}
8、给出三角形的三边A、B、C,求三角形的面积。
(先判断三边是否能构成三角形)。
#include
#include
main()
{
floata,b,c,area,p;
scanf("%f,%f,%f",&a,&b,&c);
p=(a+b+c)/2;
if(a+b>c&&a+c>b&&b+c>a)
{
area=sqrt(p*(p-a)*(p-b)*(p-c));
printf("Area=%6.2f\n",area);
}
elseprintf("Error\n");
}
9、编写程序求一个字符串的第n个字符开始、长度为m的字串。
#include
main()
{
charc[100],s[100];
intn,m,i;
printf("请输入一字符串:
");
gets(c);
printf("n,m的值\n");
scanf("%d,%d",&n,&m);
for(i=0;i{
s[i]=c[n+i-1];
}
printf("%s",s);
}
10、
#include
main()
{
intdate;
printf("Inputadate:
");
scanf("%d",&date);
if(date==123)
printf("RIGHT\n");
else
{
printf("WRONG\n");
if(date>123)
printf("ItisLARGE\n");
else
printf("ItisSMALL\n");
}
}
11、
#include
main()
{
charc[50];
inti,n=0;
scanf("%s",c);
for(i=0;i<50;i++)
if(c[i]!
='\0')
{
if(c[i]=='A')n++;
if(c[i]=='a')n++;
if(c[i]=='E')n++;
if(c[i]=='e')n++;
if(c[i]=='I')n++;
if(c[i]=='i')n++;
if(c[i]=='O')n++;
if(c[i]=='o')n++;
if(c[i]=='U')n++;
if(c[i]=='u')n++;
}
printf("%d\n",n);
}
12、
#include
main()
{
intx;
for(x=1;x<=100;x++)
if(x*x%10==x||x%100==x)
printf("%5d",x);
printf("\n");
}
13、
#include
main()
{
inti;
printf("请输入一个整数:
");
scanf("%d",&i);
if(i%7==0)
printf("YES");
else
printf("NO");
}
14、
#include
intstrcmp(charstr1[],charstr2[])
{
inti=0;
while(str1[i]==str2[i]&&str1[i]!
='\0'&&str2[i]!
='\0')
i++;
returnstr1[i]-str2[i];
}
main()
{
charstr[20];
intx=0;
do
{
printf("\nEnterpassword:
");
gets(str);
if(strcmp(str,"12345"))
x++;
else
{
printf("\nYouarepass!
\n");
break;}
}while(x<3);
if(x==3)
printf("\nYouarefalrure!
\n");
}
15、
#include
main()
{
inti,n,sum=0,s;
for(n=1;n<=10;n++)
{
s=1;
for(i=1;i<=n;i++)
{
s=s*i;
}
sum=sum+s;
}
printf("%d",sum);
}
16、#include
main()
{
inti,j,row=0,colum=0,max;
staticinta[3][4]={{1,2,3,4},{9,8,7,6},{10,-10,-4,4}};
max=a[0][0];
for(i=0;i<=2;i++)
for(j=0;j<=3;j++)
{
if(a[i][j]>max)
{
max=a[i][j];
row=i;colum=j;
}
}
printf("max=%d,row=%d,colum=%d",max,row,colum);
}
17、#include
main()
{
inti,n=0;
for(i=1;i<=2000;i++)
{
if(i%5==0)
n++;
}
printf("%d\n",n);
}
18、#include
main()
{
longinti,j=0,t,a;
printf("输入一个小于65535的正整数:
");
scanf("%ld",&i);
a=i;
do
{
t=i%10;
j=j*10+t;
i=i/10;
}
while(i>0);
printf("它的逆序数为:
%ld",j);
if(j==a)
printf("它是回文数");
else
printf("它不是回文数");
}
19、#include
main()
{
longintx,y=0;
intt,n=0;
printf("请输入一个不多于5位数的数:
\n");
scanf("%ld",&x);
printf("此数的每一位为(由个位开始):
\n");
while(x>0)
{
t=x%10;
y=y*10+t;
x=x/10;
n++;
printf("%d\n",t);
}
printf("此数有%d位\n",n);
printf("此数的逆序数为%ld\n",y);
}
#include
voidfun(void)
{
inta1,a2,a3,a4,a5;
longa,b;
printf("请您输入一个5位以内的数\n");
scanf("%ld",&a);
if(a<99999)
{
printf("您输入的数在所求范围里面\n");
a1=a/10000;
a=a-a1*10000;
a2=a/1000;
a=a-a2*1000;
a3=a/100;
a=a-a3*100;
a4=a/10;
a=a-a4*10;
a5=a/1;
if(a1!
=0)
{
b=a5*10000+a4*1000+a3*100+a2*10+a1;
printf("此数有5位\n");
}
elseif(a1==0&&a2!
=0)
{
b=a5*1000+a4*100+a3*10+a2;
printf("此数有4位\n");
}
elseif(a1==0&&a2==0&&a3!
=0)
{
b=a5*100+a4*10+a3;
printf("此数有3位\n");
}
elseif(a1==0&&a2==0&&a3==0&&a4!
=0)
{
b=a5*10+a4;
printf("此数有2位\n");
}
else
{
b=a5;
printf("此数有1位\n");
}
printf("这个数按逆向表示为%ld\n",b);
}
else
{
printf("您输入的数不在此范围内,请您重新输入:
\n");
fun();
}
}
main()
{
fun();
}
20、#include
main()
{
inta[4][4],i,j,sum=0;
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
}
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(i+j==3||i==j)
sum=sum+a[i][j];
}
}
printf("%d",sum);
}
21、#include
#include
main()
{
longt;
chara[100],b[100];
printf("请您分别输入2个字符串\n");
scanf("%s",a);
scanf("%s",b);
t=strcmp(a,b);
if(t==0)
printf("您输入的两个字符串相同\n");
else
printf("您输入的两个字符串不相同\n");
}
22,#include
main()
{
intn;
for(n=100;n<=200;n++)
if(n%3==0&&n%7!
=0)
printf("%d\t",n);
}
23、#include
main()
{
intn;
printf("请输入一个1-12数字,分别代表着月份:
\n");
scanf("%d",&n);
switch(n)
{
case1:
printf("您输入的月份是:
January\n");break;
case2:
printf("您输入的月份是:
February\n");break;
case3:
printf("您输入的月份是:
March\n");break;
case4:
printf("您输入的月份是:
April\n");break;
case5:
printf("您输入的月份是:
May\n");break;
case6:
printf("您输入的月份是:
June\n");break;
case7:
printf("您输入的月份是:
July\n");break;
case8:
printf("您输入的月份是:
Augest\n");break;
case9:
printf("您输入的月份是:
September\n");break;
case10:
printf("您输入的月份是:
October\n");break;
case11:
printf("您输入的月份是:
November\n");break;
case12:
printf("您输入的月份是:
December\n");break;
default:
printf("您的输入有误");
}
}
24、#include
#defineN5
voidsmp_selsesort(intr[],intn)/*简单选择排序*/
{
inti,j,t;
for(i=0;ifor(j=i+1;jif(r[i]>r[j])
{
t=r[i];
r[i]=r[j];
r[j]=t;
}
}
main()
{
inti,a[N];
printf("请输入%d个整数:
\n",N);
for(i=0;iscanf("%d",&a[i]);
smp_selsesort(a,N);
printf("排序后的输出为:
\n");
for(i=0;iprintf("%5d",a[i]);
}
25、#include
main()
{
longinta[10],c,s=0;
floatb;
printf("请您输入十个整数\n");
for(c=0;c<10;c++)
scanf("%ld",&a[c]);
for(c=0;c<10;c++)
s=s+a[c];
b=s*1.0/10;
printf("平均值b=%f\n",b);
printf("这组数中大于平均值的数为:
\n");
for(c=0;c<10;c++)
if(a[c]>b)
printf("%d\n",a[c]);
}
26、#include
main()
{
inta,b,s;
for(a=1;a<=9;a++)
{
for(b=a;b<=9;b++)
{
s=a*b;
printf("%d*%d=%d\t",a,b,s);
}
printf("\n");
}
}
27、#include
#include
main()
{
intc,w[2],d=0,t=1,q=0;
chara[100],b[10];
printf("请您输入一个主字符串:
\n");
scanf("%s",a);
printf("请您输入在字符串中多次出现的字符串:
\n");
scanf("%s",b);
w[0]=strlen(b);
w[1]=strlen(a);
for(c=0;c{
if(a[c]==b[d])
{
if(d>=w[0])
d=0;
d=d+1;
if(a[c+1]==b[d])
t=t+1;
else
{
d=0;
t=1;
}
}
else
{d=0;t=1;}
if(t==w[0])
q=q+1;
}
printf("您输入的字符%s在主字符串中出现的次数为:
\n",b);
printf("%d\n",q);
}
28、#include
voidfun(void)
{
inta;
printf("请您输入您的分数,我们将根据您的分数对其进行评定\n");
scanf("%d",&a);
printf("您的分数等级为:
\n");
if(a<=100&&a>=90)
printf("A\n");
elseif(a<90&&a>=80)
printf("B\n")