當前位置:首頁 » 編程軟體 » 編程設計試題

編程設計試題

發布時間: 2023-09-02 08:00:26

c語言程序設計試題

c語言程序設計試題

闡述編程語言的概念,學習進制轉換以及程序的基本運行原理,讓大家先有一個整體上的認識。下面是我整理的關於c語言程序設計基礎知識,希望大家認真閱讀!

【程序1】

題目:有1、2、3、4個數字,能組成多少個互不相同且無重復數字的三位數?都是多少?

1.程序分析:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列後再去

掉不滿足條件的排列。

2.程序源代碼:

代碼如下:

#include "stdio.h"

#include "conio.h"

main()

{

int i,j,k;

printf(" ");

for(i=1;i<5;i++) /*以下為三重循環*/

for(j=1;j<5;j++)

for (k=1;k<5;k++)

{

if (i!=k&&i!=j&&j!=k) /*確保i、j、k三位互不相同*/

printf("%d,%d,%d ",i,j,k);

}

getch();

}

【程序2】

題目:企業發放的獎金根據利潤提成。利潤(I)低於或等於10萬元時,獎金可提10%;利潤高

於10萬元,低於20萬元時,低於10萬元的部分按10%提成,高於10萬元的部分,可可提

成7.5%;20萬到40萬之間時,高於20萬元的部分,可提成5%;40萬到60萬之間時高於

40萬元的部分,可提成3%;60萬到100萬之間時,高於60萬元的部分,可提成1.5%,高於

100萬元時,超過100萬元的部分按1%提成,從鍵盤輸入當月利潤I,求應發放獎金總數?

1.程序分析:請利用數軸來分界,定位。注意定義時需把獎金定義成長整型。

2.程序源代碼:

代碼如下:

#include "stdio.h"

#include "conio.h"

main()

{

long int i;

int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;

scanf("%ld",&i);

bonus1=100000*0. 1;

bonus2=bonus1+100000*0.75;

bonus4=bonus2+200000*0.5;

bonus6=bonus4+200000*0.3;

bonus10=bonus6+400000*0.15;

if(i<=100000)

bonus=i*0.1;

else if(i<=200000)

bonus=bonus1+(i-100000)*0.075;

else if(i<=400000)

bonus=bonus2+(i-200000)*0.05;

else if(i<=600000)

bonus=bonus4+(i-400000)*0.03;

else if(i<=1000000)

bonus=bonus6+(i-600000)*0.015;

else

bonus=bonus10+(i-1000000)*0.01;

printf("bonus=%d",bonus);

getch();

}

【程序3】

題目:一個整數,它加上100後是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?

1.程序分析:在10萬以內判斷,先將該數加上100後再開方,再將該數加上268後再開方,如果開方後

的結果滿足如下條件,即是結果。請看具體分析:

2.程序源代碼:

代碼如下:

#include "math.h"

#include "stdio.h"

#include "conio.h"

main()

{

long int i,x,y,z;

for (i=1;i<100000;i++)

{

x=sqrt(i+100); /*x為加上100後開方後的結果*/

y=sqrt(i+268); /*y為再加上168後開方後的結果*/

if(x*x==i+100&&y*y==i+268) /*如果一個數的平方根的平方等於該數,這說明此數是完全平方數*/

printf(" %ld ",i);

}

getch();

}

【程序4】

題目:輸入某年某月某日,判斷這一天是這一年的第幾天?

1.程序分析:以3月5日為例,應該先把前兩個月的加起來,然後再加上5天即本年的.第幾天,特殊

情況,閏年且輸入月份大於3時需考慮多加一天。

2.程序源代碼:

代碼如下:

#include "stdio.h"

#include "conio.h"

main()

{

int day,month,year,sum,leap;

printf(" please input year,month,day ");

scanf("%d,%d,%d",&year,&month,&day);

switch(month) /*先計算某月以前月份的總天數*/

{

case 1:sum=0;break;

case 2:sum=31;break;

case 3:sum=59;break;

case 4:sum=90;break;

case 5:sum=120;break;

case 6:sum=151;break;

case 7:sum=181;break;

case 8:sum=212;break;

case 9:sum=243;break;

case 10:sum=273;break;

case 11:sum=304;break;

case 12:sum=334;break;

default:printf("data error");break;

}

sum=sum+day; /*再加上某天的天數*/

if(year%400==0||(year%4==0&&year%100!=0)) /*判斷是不是閏年*/

leap=1;

else

leap=0;

if(leap==1&&month>2) /*如果是閏年且月份大於2,總天數應該加一天*/

sum++;

printf("It is the %dth day.",sum);

getch();

}

【程序5】

題目:輸入三個整數x,y,z,請把這三個數由小到大輸出。

1.程序分析:我們想辦法把最小的數放到x上,先將x與y進行比較,如果x>y則將x與y的值進行交換,

然後再用x與z進行比較,如果x>z則將x與z的值進行交換,這樣能使x最小。

2.程序源代碼:

代碼如下:

#include "stdio.h"

#include "conio.h"

main()

{

int x,y,z,t;

scanf("%d%d%d",&x,&y,&z);

if (x>y)

{t=x;x=y;y=t;} /*交換x,y的值*/

if(x>z)

{t=z;z=x;x=t;} /*交換x,z的值*/

if(y>z)

{t=y;y=z;z=t;} /*交換z,y的值*/

printf("small to big: %d %d %d ",x,y,z);

getch();

}

【程序6】

題目:用*號輸出字母C的圖案。

1.程序分析:可先用'*'號在紙上寫出字母C,再分行輸出。

2.程序源代碼:

代碼如下:

#include "stdio.h"

#include "conio.h"

main()

{

printf("Hello C-world! ");

printf(" **** ");

printf(" * ");

printf(" * ");

printf(" **** ");

getch();

}

【程序7】

題目:輸出特殊圖案,請在c環境中運行,看一看,Very Beautiful!

1.程序分析:字元共有256個。不同字元,圖形不一樣。

2.程序源代碼:

代碼如下:

#include "stdio.h"

#include "conio.h"

main()

{

char a=176,b=219;

printf("%c%c%c%c%c ",b,a,a,a,b);

printf("%c%c%c%c%c ",a,b,a,b,a);

printf("%c%c%c%c%c ",a,a,b,a,a);

printf("%c%c%c%c%c ",a,b,a,b,a);

printf("%c%c%c%c%c ",b,a,a,a,b);

getch();

}

【程序8】

題目:輸出9*9口訣。

1.程序分析:分行與列考慮,共9行9列,i控制行,j控制列。

2.程序源代碼:

代碼如下:

#include "stdio.h"

#include "conio.h"

main()

{

int i,j,result;

printf(" ");

for (i=1;i<10;i++)

{

for(j=1;j<10;j++)

{

result=i*j;

printf("%d*%d=%-3d",i,j,result); /*-3d表示左對齊,佔3位*/

}

printf(" "); /*每一行後換行*/

}

getch();

}

【程序9】

題目:要求輸出國際象棋棋盤。

1.程序分析:用i控制行,j來控制列,根據i+j的和的變化來控制輸出黑方格,還是白方格。

2.程序源代碼:

代碼如下:

#include "stdio.h"

#include "conio.h"

main()

{

int i,j;

for(i=0;i<8;i++)

{

for(j=0;j<8;j++)

if((i+j)%2==0)

printf("%c%c",219,219);

else

printf(" ");

printf(" ");

}

getch();

}

;

② 求解C語言程序設計題

完整的fun函數代碼如下:

int fun(STU a[], int n, STU h[]) {

int i, k = 0;

double avg = 0;

for (i = 0; i < n; i++) {

a[i].sum = a[i].s1 * 0.7 + a[i].s2 * 0.3;

avg += a[i].sum; // 先計算總分

}

avg = avg / n; // 再計算平均分

for (i = 0; i < n; i++) {

if (a[i].sum > avg) { // 統計平均分以上的學生

strcpy(a[i].level, "均分以上");

h[k++] = a[i];

}

}

return k;

}

運行結果如下:

可見成功輸出了平均分以上的學生信息,望採納~

③ C語言程序設計試題

1.請編程序列印出一張乘法「九九表」。表的樣式如下:
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
2.編程序把從鍵盤輸入的英文短文作為一個字元串(長度不超過30),把短文
中每個單詞的首字母改成大寫,(原輸入可以是大寫),輸出轉換後的字元串。
3.查找長度為10的整型數組,列印其中整數5出現的次數,及每個整數5對應的數組元下標,列印的結果用逗號隔開。若數組中沒有5,也要報告「ther is not number 5」。(數組各元從鍵盤輸入)
4.請用循環結構編程列印出如下字元矩陣
A B C D E Z
Z A B C D E
E Z A B C D
D E Z A B C
C D E Z A B
B C D E Z A
5.請編程計算並輸出整數矩陣周邊各元之和,矩陣的維數為7×4。(矩陣各元從
鍵盤輸入)
6.編一個函數void merger(int a[], int b[], int c[]), 其功能是歸並。把兩個遞增的整型數組a和b, 歸並成遞增數組c。再編一個主函數,輸入兩個遞增數組(一個長度為5,另一個長度為9),調用merger函數,列印歸並後的結果。
7.編程列印所有各位數的立方和等於該整數的三位數。
8.編程從鍵盤輸入一字元串存放在字元型數組s中,將s中的子字元串」shu」都找到,並輸出各子串起始的下標位置。若s中不存在」shu」,也要報告「there is not string shu」。設字元串s有效長度小於40。
9.編程將一個正整數(小於1000)表示成1和質因子的連乘積。如:輸入45,輸出45=1*3*3*5。
10.編程計算方程 的正整數解,並輸出。
11.中國有句俗語「三天打魚兩天曬網」,某人從03年1月1日起三天打魚兩天曬網,編程計算某月某日,他在打魚還是在曬網。某月某日從鍵盤輸入,打魚則輸出1,曬網則輸出0。
12.從鍵盤輸入10名學生的成績,顯示與平均成績最接近的三個成績。
程序設計基礎(C語言)水平測試考核(參考答案)
1.
/*multiply-table */
main()
{ int i,j;
for(i=1;i<10;i++)
{ for(j=1;j<10;j++) printf("%4d",i*j);
printf("\n");
}
}
2.
/*capitalization of prefix*/
main()
{ char a[80];
int i;
gets(a);
for(i=0;a[i];i++)
if((i==0||a[i-1]==' ')&&(a[i]>='a'&&a[i]<='z')) a[i]=a[i]-32;
puts(a);
}
3.
/*search number 10*/
main()
{ int a[10],i,c=0;
for(i=0;i<10;i++) scanf("%d",&a[i]);
for(i=0;i<10;i++)
if(a[i]==5)
{ c++; printf("%d,",i);
}
if(c==0) printf("\nThere is not number 5.\n");
else printf("%d\n",c);
}
4.
/*characters matrix*/
#define N 6
void gosub(char a[],int n)
{ char t;
int i;
t=a[n];
for(i=n;i>0;i--)
a[i]=a[i-1];
a[0]=t;
}

④ 自考「C語言程序設計」模擬試題一

一、填空題

1、C語言中基本的數據類型有:______、______ 、______ .

2、C語言中普通整型變數的類型說明符為______,在內存中占______位元組,有符號普通整型的數據范圍是______ .

3、整數-35在機內的補碼表示為______.

4、執行下列語句int a=8; a+=a-=a*a; 後,a的值是______.

5、有如下語句:char A[ ]={「I am a student」}; 該字元串的長度是______,A[3]=______.

6、符號「a」和『a』的區別是______.

7、所謂「指針」就是______.「&」運算符的作用是______.「*」運算符的作用是______.

8、有如下輸入語句:scanf(「a=%d,b=%d,c=%d」,&a,&b,&c);為使變數a的值為1,b的值為3,c的值為2,從鍵盤輸入數據的正確形式應是______.

二、選擇題

1、設整型變數a為5,使b不為2的表達式是( )。

A. b=a/2 B. b=6-(——a) C. b=a%2 D. b=a>3?2:1

2、為猜銷了避免嵌套的條件分支語句if-else的二義性,C語言規定:C程序中的或兆芹else總是與( )組成配對關系。

A. 縮排位置相同的if B. 在其之前未配對的if

C. 在其之前未配對的最近的if D.同一行上的if

3、以下程序的輸出結果是( )。

int x=10,y=10;

printf(「%d %d\n」,x——,——y);

A. 10 10 B. 9 9 C. 9 10 D. 10 9

4、設A為存放(短)整型的一維數組,如果A的首地址為P,那麼A中第i 個元素的地址為( )。

A.P+i*2 B. P+(i-1)*2 C. P+(i-1) D. P+i

5、選出下列標識衫畢符中不是合法的標識符的是( )。

A. hot_do B. cat1 C. _pri D. 2ab

6、以下程序的輸出結果是( )。

int a=5;

float x=3.14;

a*=x*(『E』 - 『A』);

printf(「%f\n」,(float)a);

A. 62.000000 B. 62.800000 C. 63.000000 D. 62

7、設有說明double(*p1)[N];其中標識符p1是( )。

A. N個指向double型變數的指針。

B. 指向N個double型變數的函數指針。

C. 一個指向由N個double型元素組成的一維數組的指針。

D.具有N個指針元素的一維指針數組,每個元素都只能指向double型量。

8、在C程序中有如下語句:char *func(int x,int y);它是( )。

A. 對函數func的定義。 B. 對函數func的調用。

C.對函數func的原型說明。 D. 不合法的。

9、以下程序的輸出結果是( )。

char str[15]=「hello!」;

printf(「%d\n」,strlen(str));

A. 15 B. 14 C. 7 D. 6

10、分析以下程序的輸出結果是( )。

main()

{int a=5,b=-1,c;

c=adds(a,b);

printf(「%d」,c);

c=adds(a,b);

printf(「%d\n」,c); }

int adds(int x,int y)

{static int m=0,n=3;

n*=++m;

m=n%x+y++;

return(m); }

A. 2,3 B. 2,2 C. 3,2 D. 2,4

11、下列描述中不正確的是( )。

A. 字元型數組中可能存放字元串。

B. 可以對字元型數組進行整體輸入、輸出。

C. 可以對整型數組進行整體輸入、輸出。

D. 不能在賦值語句中通過賦值運算符「=」對字元型數組進行整體賦值。

12、以下程序的輸出結果是( )。

#define f(x) x*x

main()

{int a=6,b=2,c;

c=f(a)/f(b);

printf(「%d\n」,c);

}

A. 9 B. 6 C. 36 D. 18

13、設有如下定義: int x=10,y=3,z;

則語句printf(「%d\n」,z=(x%y,x/y)); 的輸出結果是( )。

A. 1 B. 0 C. 4 D. 3

14、定義如下變數和數組:int i;int x[3][3]={1,2,3,4,5,6,7,8,9};

則語句for(i=0;i<3;i++) printf(「%d 」,x[i][2-i]); 的輸出結果是( )。

A. 1 5 9 B. 1 4 7 C. 3 5 7 D. 3 6 9

15、以下對二維數組a進行正確初始化的是( )

A. int a[2][3]={{1,2},{3,4},{5,6}}; B. int a[ ][3]={1,2,3,4,5,6};

C. int a[2][ ]={1,2,3,4,5,6}; D. int a[2][ ]={{1,2},{3,4}};

16、兩次運行下面的程序,如果從鍵盤上分別輸入6和3,則輸出結果是( )。

int x;

scanf(「%d」,&x);

if(x++>5) printf(「%d」,x);

else printf(「%d\n」,x - -);

A. 7和5 B. 6和3 C. 7和4 D. 6和4

17、設有如下定義: char *aa[2]={「abcd」,「ABCD」}; 則以下說法中正確的是( )。

A)aa數組成元素的值分別是「abcd」和ABCD「

B)aa是指針變數,它指向含有兩個數組元素的字元型一維數組

C)aa數組的兩個元素分別存放的是含有4個字元的一維字元數組的首地址

D)aa數組的兩個元素中各自存放了字元『a』和『A』的地址

18、下列程序的輸出結果是( )。

char *p1=「abcd」, *p2=「ABCD」, str[50]=「xyz」;

strcpy(str+2,strcat(p1+2,p2+1));

printf(「%s」,str);

A. xyabcAB B. abcABz C. ABabcz D. xycdBCD

19、下列程序的輸出結果是( )。

int a[5]={2,4,6,8,10},*P,* *k;

p=a; k=&p;

printf(「%d」,*(p++));

printf(「%d\n」,* *k);

A. 4 4 B. 2 2 C. 2 4 D. 4 6

20、不能把字元串:Hello!賦給數組b的語句是( )。

A. char b[10]={『H』,『e』,『l』,『l』,『o』,『!』};

B. char b[10]; b=「Hello!」;

C. char b[10]; strcpy(b,「Hello!」);

D. char b[10]=「Hello!」;

三、讀程序題

1、float f=3.1415927;

printf(「%f,%5.4f,%3.3f」,f,f,f);

則程序的輸出結果是 .

2、int x=6, y=7;

printf(「%d,」,x++);

printf(「%d\n」,++y);

程序的輸出結果是 .

3、a=3;

a+=(a<1)?a:1;

printf(「%d」,a);

結果是.

4、for (a=1,b=1;a<=100;a++)

{ if(b>=20) break;

if(b%3==1)

{b+=3; continue;}

b-=5; }

程序的輸出結果a的值為 .

5、int y=1, x, *p, a[ ]={2,4,6,8,10};

p=&a[1];

for(x=0;x<3;x++)

y + = * (p + x);

printf(「%d\n」,y);

程序的輸出結果y的值是 .

四、程序填空題

1、從鍵盤上輸入10個數,求其平均值。

main()

{int i;

float f,sum;

for(i=1,sum=0.0;i<11;i++)

{ ;

; }

printf(「average=%f\n」,sum/10); }

2、以下程序是建立一個名為myfile的文件,並把從鍵盤輸入的字元存入該文件,當鍵盤上輸入結束時關閉該文件。

#include

main()

{ FILE *fp;

char c;

fp= ;

do{

c=getchar();

fputs(c,fp);

}while(c!=EOF);

}

3、以下程序的功能是:從鍵盤上輸入若干個學生的成績, 統計並輸出成績和最低成績,當輸入負數時結束輸入。請填空。

main()

{ float x,amax,amin;

scanf(「%f」,&x);

amax=x; amin=x;

while( )

{ if(x>amax) amax=x;

if( ) amin=x;

scanf(「%f」,&x); }

printf(「\namax=%f\namin=%f\n」,amax,amin); }

五、編程題

1. 三個整數a、b、c,由鍵盤輸入,輸出其中的一個數。

2.輸出1900~2000年中所有的閏年。每輸出3個年號換一行。(判斷閏年的條件為下面二者之一:能被4整除,但不能被100整除。或者能被400整除。)

3.請編一個函數int fun(int a),它的功能是:判斷a是否是素數,若a是素數,返回1;若不是素數,返回0.A的值由主函數從鍵盤讀入。

4.有N個學生,每個學生的信息包括學號、性別、姓名、四門課的成績,從鍵盤上輸入N個學生的信息,要求輸出總平均成績的學生信息,包括學號、性別、姓名和平均成績。

熱點內容
雲免搭建腳本 發布:2024-11-20 07:25:10 瀏覽:310
企圖SQL 發布:2024-11-20 07:24:29 瀏覽:136
冰火ftp 發布:2024-11-20 07:14:35 瀏覽:89
android實時視頻播放 發布:2024-11-20 07:11:18 瀏覽:103
oracle存儲過程數組定義 發布:2024-11-20 07:11:17 瀏覽:844
64的匯編編譯器 發布:2024-11-20 07:05:43 瀏覽:856
保定市後推式存儲貨架哪裡買 發布:2024-11-20 07:03:25 瀏覽:556
家用suv適合什麼配置 發布:2024-11-20 07:01:45 瀏覽:818
java免費課程 發布:2024-11-20 06:54:14 瀏覽:264
手機可以直接升級方舟編譯器嗎 發布:2024-11-20 06:53:35 瀏覽:285