『壹』 華北水利水電學院c語言重修考試試題什麼題型
一、寫運行結果
1. main()
{ int a[10]={1,2,3,4,5,6,7,8,9,10}, *p=&a[3], *q=p+2;
printf("%d\n", *p + *q);
}
執行結果是 10 。
2. 下面程序段的執行結果是( 9.5 )。
#define PT 5.5
#define S(x) PT*x*x
main( )
{ int a=1,b=2;
printf(「%4.1f\n」,S(a+b))
}
3. main()
{ int a=0,i;
for(i=0;i<5;i++)
{ switch(i)
{ case 0:
case 3:a+=2;
case 1:
case 2:a+=3;
default:a+=5;
}
printf("%d\n",a);
}
執行結果是 41 。
4. main( )
{ char *p[10]={「abc」, 「aabdfg」, 「dcdbe」, 「abbd」, 「cd」};
printf(「%d\n」,strlen(p[4]));
}
執行結果是 2 。
5. main()
{ int i=0,x=0;
for (;;)
{ if(i==3||i==5) continue;
if (i==6) break;
i++; s+=i;
};
printf("%d\n",s); }
執行結果是 8 。
6. main()
{ char a='a',b;
printf("%c,",++a);
printf("%c\n",b=a++);
}
程序運行後的輸出結果是 b , b
7. int f()
{ static int i=0;
Int s=1;
s+=i;
i++;
return s;
}
main()
{ int i,a=0;
for(i=0;i<5;i++) a+=f();
printf("%d\n",a);
}
程序運行後的輸出結果是 15
8. int d=1l;
fun (int p)
{ int d=5;
d+=p++;
printf("%d,",d); }
main()
{int a=3;
fun(a);
d+=a++;
printf("%d\n",d); }
輸出結果為:___8, 4_
9. main()
{int x=3,y=6,a=0;
while(x++!=(y-=1))
{a+=1;
if(y<x) break;
}
printf(「x=%d,y=%d,a=%d\n」,x,y,a);}
輸出結果為:___5, 4, 1 _____
10. int fun(int x,int y,int *cp,int *dp)
{ *cp=x+y; *dp=x-y; }
main()
{int a, b, c, d;
a=30; b=50;
fun(a,b,&c,&d);
printf("%d,%d\n", c, d);
}
輸出結果是_80, -20_____。
二、完善程序
1、以下函數的功能是計算s=1+1/2!+1/3!+……+1/n!,請填空。
double fun(int n)
{double s=0.0,fac;
int i;
fac=1.0 ;
for(i=1;i<=n;i++)
{fac= fac*i ;
s=s+1/fac;
}
return s ;
}
2、順序輸出50——100之間的素數。
#include」stdio.h」
#include」math.h」
main()
{int j=0,n,k,i,flag;
for( n=51; n<100;n=n+2)
{k=sqrt((double)n); i=2; flag=0;
while( i<=k )&&(flag==0))
{if(n%i==0) flag=1
i=i+1;}
if ( flag==0 )
{j=j+1;printf(「%d」,n);}
}
}
3 以下程序從終端讀入數據到數組中,統計其中正數的個數,並計算它們之和。
請填空。
main()
{ int i,a[20],sum,count;
__ int sum=0,count=o;___
for(i=0;i<20;i++) scanf("%d", _&a[i]_ ___ );
for(i=0;i<20;i++)
{ if(a>0)
{ count++;
sum+= _a[i] ____ ;
}
}
printf("sum=%d,count=%d\n",sum,count);
}
4. 以下isprime函數的功能是判斷形參a是否為素數,是素數,函數返回1,否則返回0,請填空
int isprime(int a)
{ int i;
for(i=2;i<=a/2;i++)
if(a%i==0) _return 0_ ___;
_return 1 ___;
}
5通過函數求f(x)的累加和,其中f(x)=x2+1
main()
{
printf("The sum=%d\n",SunFun(10));
}
SunFun(int n)
{
int x,s=0;
for(x=0;x<=n;x++) s+=F(__x______);
return s;
}
F( int x)
{ return _(x*x+1)______;}
6. 以下程序的功能是:輸出100以內(不含100)能被3整除且個位數為6的所有整數,請填空。
main()
{ int i,j;
for(i=0;__i<=9__;i++)
{ j=i*10+6;
if(_j%3!=0____) continue;
printf(「%d 」,j);
}
}
7.下面的程序是對一維數組的10個元素中的前5個元素與後5個元素對換,即a(0) 與a(9)互換,a(1)與a(8)互換,…, 填空將程序補充完整。
#include "stdio.h"
void main()
{ int a[10], i,t;
printf("Input the data:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;_____i<=4____;i++)
{t=a[i];___a[i]=a[9-i]_________;____⑨a[9-i]=t_______;}
for(i=0; i<10; i++)
printf("%6d",a[i]);
}
三、編程題
1. 編程實現從鍵盤上輸入10個整數,排序(從小到大)後輸出。
#include<stdio.h>
void main()
{
int a[11];
int i,j,temp;
printf("please in put ten numbers:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
for(j=0;j<9-i;j++)
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
printf("結果是:\n");
for(i=0;i<10;i++)
printf("%3d",a[i]);
printf("\n");
}
2. 編制一個C程序,求 (即求1+1/2!+1/3!+…+1/20!)
#include<stdio.h>
void main()
{
int n,i,j;
float sum=0,l=1.0;
scanf("%d",&n);
for( i=1;i<=20;i++)
{
l=1.0;
for( j=1;j<=i;j++)
{
l=l*j;
}
sum+=1.0/l;
}
printf("%f",sum);
}
3. 編寫函數判斷數n是否是素數,在主函數中調用該函數輸出200到300之間的所有素數.
(1)。#include<stdio.h>
#include<math.h>
int isprime(int n)
{
int w,k,i;
k=sqrt(n),w=1;
for(i=2;i<sqrt(n)&&w==1;i++)
if(n%i==0) w=0;
return w;
}
void main()
{
int n,i;
for(n=200,i=0;n<=300;n++)
{
if(isprime(n))
{
printf("%4d",n);
i++;
if(i%10==0)
printf("\n");
}
}
}
(2)#include<stdio.h>
#include<math.h>
int prime(int n)
{
int m,i=2,t;
t=(int)sqrt(n)
for(;i<=t;i++)
if(n%i==0)/
{
m=0;
break;
}
if(i>t)
m=1;
else continue;
return m;
}
void main()
{
int n;
int i;
printf("請輸入你要判斷的數!\n");
scanf("%d",&n);
if(prime(n))
printf("是素數!\n");
else
printf("不是素數!\n");
printf("輸出200-300之間的素數:\n");
for(i=200;i<=300;i++)
{
if(prime(i))/*利用已經寫好的函數判斷i是否是素數!如果函數返回1證明是素數則輸出!否則(即運行到else)continue;*/
printf("%-4d",i);
else continue;
}
printf("\n");
}
4. 從鍵盤輸入兩個正整數,求其最大公約數並輸出結果。(要求主函數實現數據輸入、輸出以及調用;另外再寫一個函數求最大公約數,並用主函數調用)。
#include<stdio.h>
int f(int a,int b)
{
int y;
y=a%b;
return(y);
}
int g(int num1,int num2)
{
int h,a;
h=num1*num2/a;
return(h);
}
void main()
{
int num1,num2,a,b,temp;
printf("please input two number:\n");
scanf("%d%d",&num1,&num2);
if(num1>num2)
{
temp=num1;num1=num2;num2=temp;
}
a=num1;b=num2;
while(b!=0)
{temp=f(a,b);a=b;b=temp;}
printf("最大公約數:%d\n",a);
printf("最小公倍數:%d\n",g(num1,num2));
}
你在哪個考場,祝你明天好運!