當前位置:首頁 » 編程語言 » c語言高二期末考試題
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言高二期末考試題

發布時間: 2022-09-10 23:06:29

『壹』 c語言、、期末考試的題啊 求正解!

#include<stdio.h>
void main()
{
float sal=500;
int profit;
printf("請輸入利潤值:");
scanf("%d",&profit);
if(profit>1000&&profit<=2000) sal = sal+profit*0.1;
if(profit>2000&&profit<=5000) sal = sal+profit*0.15;
if(profit>5000&&profit<=10000) sal = sal+profit*0.2;
if(profit>10000) sal = sal+profit*0.25;
printf("salary = %f\n", sal);
}

『貳』 C語言考試題

我來回答下把:
1.1
2.9
解釋:t = (a>b)?a:b等價於t = ((a>b)?a:b),這下應該知道了把
3.96 `(和~鍵是同一個鍵)
解釋:a=96;96是那個字元的ACSII碼值的十進製表示,它的十六進製表示的ASCII碼值為60,你可以對96進行除16取余法得到60,然後你去查看下字元的ASCII碼 16進製表示的那個表就會發現,它對應的是這個字元,所以就是他了,別和單引號混淆就好,單引號的ASCII碼十六進製表示為27
4.a[0] a[1] a[2]
5.1600
6.文本文件 二進制文件 [這個拿的不是很准]
7.fopen fclose fseek

下面:
1.C
解釋:a+=a-=a*=a,首先要知道+=,-=,*=的優先順序是相同的,但是他們的結合性是由右向左的,所以,他相當於a+=a-=(a=a*a),你還要知道,這是在同一條語句中多次修改同一個變數的值,這里有結合性,可以保證,但是有的時候並不可以,因為語言中明確規定,求值順序未定義,一般盡可能不要在同一條語句里多次修改同一個變數的值,有的時候還和編譯器有關的,a+=a-=(a=a*a)相當於a+=(a=a-(a=a*a)),在a=(a+(a=a-(a=a*a))),所以為0
2.B
3.D
解釋:你定義一個帶參數的宏#define ADD(x) (x)+(x)
你要知道,宏替換是機械化的替換,不會很智能化的,也就是說
在這里,替換的時候是替換成了這樣d=(a+b)+(a+b)*c;所以最後就是80了
4. A
解釋:這樣理解把, char a[5]; char *p=a;這個是把數組的首地址賦給指針p來初始化指針,你後面再加一句p="abcd";不就是對指針的賦值嗎,使指針不再指向數組的首地址,而是指向了字元串的首地址了.相信char *p="abcd";很常見把,呵呵...
5.C
解釋:因為k=2,然後執行關系表達式k==0,結果顯然判斷結果為假,所以不執行循環體
6.C
7.A
指針是不能相加的

8.D
解釋:這個應該好好解釋下,這個題還好了
struct st{ int n;struct st *next;};
static struct st a[3]={5,&a[1],7,&a[2],9,『\0』},*p; p=&a[0];
A p++->n B p->n++ C (*p).n++ D ++p->n
分析:首先你要知道,這是定義了一個結構體數組,這個static struct st a[3]={5,&a[1],7,&a[2],9,『\0』}寫的易讀一點就是static struct st a[3]={{5,&a[1]},{7,&a[2]},{9,'\0'}},是不是明了了好多.
你做這個題目之前還需要明白一點,即箭頭操作符的優先順序高於++運算符,然後分析選項
選項A.p++是後綴加,所以執行(p++)->n(即p++->n) 相當於執行p->n,即得到的值是5
選項B. p->n++相當於(p->n)++,由於是後綴加,所以得到的值也是5
選項C.(*p).n++ 就是相當於((*p).n)++,更相當於(p->n)++,所以和上面的是一樣的,也是5,為什麼它相當於它呢,這就要你看看箭頭操作符的由來了,箭頭操作符的由來就是為了結合解引用操作符*和點操作符.於一起的.來簡化書寫,增加可讀性
選項D.++p->n 相當於++(p->n),由於是前綴加,所以得到的值為6了
9.C,選擇W會格式化
10. B ,數組名其實就相當於一個指針,這里對指針做運算,加1使指針下移

寫出運行結果:
1.
10623-9003
2.
6 7 8

填空題:
1.
#include <stdio.h>
#include <math.h>
2. 2
3.break;
4.k+1

編程題:
1.代碼如下:
#include<stdio.h>
int main()
{
int i,n;
long s=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
s*=i;
printf("%ld",s);
return 0;
}

2.代碼如下

#include<stdio.h>
int main()
{
int i,s=0;
for(i=1;i<=100;i++)
s+=i;
printf("%d",s);
return 0;
}

應該沒錯把,樓主有什麼問題可以發消息給我

『叄』 一道C語言編程題

程序:
/*
題目:某班有50位學生,編程統計該班C語言期末考試成績,找出最高分,最低分,計算及格率。
輸出全部成績,並將最高分放置第一個位置,最後輸出該班的及格率。
要求:從鍵盤輸入成績,數組,函數調用,指針。請哪位高手幫我解答一下,急用。非常感謝!
*/
#include<stdio.h>

int findmax(int *b,int n)
{
int i,j,k;
int max=b[0];
for(i=0;i<n;i++)
if(b[i]>max){max=b[i];j=i;}
for(k=j;k>0;k--)b[k]=b[k-1];
b[0]=max;
return max;
}

void main()
{
int score[50];
int i,max=0,min=0,num=0;
float rate=0.0;
for(i=0;i<50;i++)
{
printf("第%d個學生成績:",i+1);
scanf("%d",&score[i]);
}
max=findmax(score,50);
min=score[0];
for(i=0;i<50;i++)
{
if(score[i]<min)min=score[i];
if(score[i]<60)num++;
}
rate=float(50-num)/50;
printf("\n最高分:%d 最低分:%d\n",max,min);
for(i=0;i<50;i++)
{
printf("%d ",score[i]);
if(i%10==9)printf("\n");
}
printf("\n及格率:%.2f\n",rate);
}

運行結果:
第1個學生成績:75
第2個學生成績:85
第3個學生成績:97
第4個學生成績:68
第5個學生成績:92
第6個學生成績:50
第7個學生成績:48
第8個學生成績:96
第9個學生成績:38
第10個學生成績:69
第11個學生成績:89
第12個學生成績:65
第13個學生成績:35
第14個學生成績:98
第15個學生成績:38
第16個學生成績:58
第17個學生成績:68
第18個學生成績:75
第19個學生成績:48
第20個學生成績:67
第21個學生成績:82
第22個學生成績:75
第23個學生成績:48
第24個學生成績:67
第25個學生成績:92
第26個學生成績:45
第27個學生成績:63
第28個學生成績:54
第29個學生成績:65
第30個學生成績:24
第31個學生成績:57
第32個學生成績:54
第33個學生成績:59
第34個學生成績:61
第35個學生成績:86
第36個學生成績:37
第37個學生成績:60
第38個學生成績:94
第39個學生成績:54
第40個學生成績:21
第41個學生成績:74
第42個學生成績:51
第43個學生成績:72
第44個學生成績:48
第45個學生成績:92
第46個學生成績:81
第47個學生成績:75
第48個學生成績:64
第49個學生成績:62
第50個學生成績:37
最高分:98 最低分:21
98 75 85 97 68 92 50 48 96 38
69 89 65 35 38 58 68 75 48 67
82 75 48 67 92 45 63 54 65 24
57 54 59 61 86 37 60 94 54 21
74 51 72 48 92 81 75 64 62 37

及格率:0.60
Press any key to continue

『肆』 C語言:班級有30個學生參加期末考試,求他們的平均分,並統計低於平均分的人數(平均分保留1位小數)

#include<stdio.h>
#define N 30
float average(float *scores, int size)
{
float aver = 0.0f;
for(int i = 0; i < size; i++)
aver += scores[i];
return aver / size;
}
int main()
{
float scores[N];
int sum = 0;
for(int i = 0; i < N; i++)
scanf("%f", &scores[i]);
float aver = average(scores, N);
printf("Average: %.1f\n", aver);
for(int i = 0; i < N; i++)
if(scores[i] < aver)
{
sum += 1;
printf("%3.1f ", scores[i]);
}
printf("\n總共有%d個人低於平均分。\n", sum);
return 0;
}

『伍』 C語言考試題.幫我做一下吧。

一單選題(10*1分):
1下列不屬於C語言關鍵字的是:
D look

2 下列關於C語言的敘述錯誤的是:
A 英文字母大小寫不加以區分 c語言是區分大小寫的

3 下列轉義符中錯誤的是:
C 『\x111』 //轉義符16進制符號後數字,只能有兩位應該改為『\x11』

4 執行語句printf(「%d」,-1);後的輸出結果是:
A -1

5 設float a=2,b=4,c=3;,以下語言表達式與代數1/2(a+b)c計算結果不一致的是:
B (1/2)*(a+b)*c //首先運算(1/2),兩個都是整數,運算後結果會等於0

6設int a=10,b=20,c=30;,條件表達式a<b?a=5:的值是:
A 5 //「(判斷句)?(語句1):(語句2)」 條件語句,若判斷句部分為真,則執行第一個語句

7設int a=9,b=-6,c;,執行語句c=a/b+0.8;後的C的值是:( )
A 1 //因為定義c為整數,所以b,d肯定是錯的

8執行語句for(i=1;i++<=4;);後i的值是:( )
C5

9 設有:int i=010,j=10則printf(「%d,%d\n」++i,j--);的輸出是:( )
B 9,10 //在c語言中,數字前加0則表示此數字為8進制數字

10設所有均已正確定義,下列程序段運行後x的值是:( )
a=b=c=0; x=35;
if(!a)x--; else if(b);if(c)x=3; else x=4;
B 4 //兩個 if語句 前面使得x-34。再運行到第二個if時,使x變為4

下面的我也不幹了, 希望我的答案加講解對你有幫助,如果你覺得答案對你有用,就把分數給我吧!即使是0分

『陸』 C語言考試題求大神幫忙做

//第一題
#include "stdafx.h"
#include <iostream>
using namespace std;

int main ( )
{
int iArray[30] = {0};
int iAraayRes[6] = {0};

iArray[0] = 2;
for(int i=1;i < 30;i++)
{
iArray[i] = 2+iArray[i-1];
}

int iTemp = 0;
int iCount = 0;
int iFlag = 0;

for(int j=0;j < 30;j++)
{
iTemp+=iArray[j];
iCount++;

if(0 == iCount%5)
{
iCount = 0;
iAraayRes[iFlag++] = iTemp/5;
}
}

return 0;
}

//第二題
#include "stdafx.h"
#include <iostream>
using namespace std;

int main ( )
{
int iArrayA[2][3] = {2,4,6,8,10,12};

for(int i=0;i < 3;i++)
{
for(int j=0;j < 2;j++)
{
cout<<iArrayA[j][i]<<endl;
}
}

return 0;
}
//第三題
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>

int main ( )
{
int iArrayA[5][1] = {0};

int iNum = 0;
int iFlag = 1;

while (21 != iFlag)
{
printf("請選擇您的投票號\n");
printf(">");
scanf("%d",&iNum);
if(iNum <= 0 || iNum > 5)
{
printf("范圍為1~5,請重新輸入|n");
continue;
}
iArrayA[iNum-1][0]+=1;
iFlag++;
}

printf("產品所得票數如下\n");
for(int i = 0; i < 5;i++)
{
printf("%d號產品得票:%d\n",i+1,iArrayA[i][0]);
}

getch();
return 0;
}

『柒』 求高手幫我做一下C語言!!!急。。。。。!! 1.某班期末考試科目為數學(MT)、英語(EN)和物理(PH),有最

#include <stdio.h>
#define STU 30#define COURSE 3
void Input(long num[],int score[][COURSE],int n);
void GetSumAver(int score[][COURSE],int n,int sum[],float aver[]);
void Sort(long num[],int score[][COURSE],int n,int sum[],float aver[]);
void Print(long num[],int score[][COURSE],int n,int sum[],float aver[]);
int Search(long num[], int n, long x);

main()
{
int n, score[STU][COURSE], sum[STU], pos;
long num[STU], x;
float aver[STU];

printf("Please enter the total number of the students(n<=30):"); scanf("%d", &n); /*輸入參加考試的學生人數*/
printf("Enter No. and score as: MT EN PH\n"); Input(num, score, n); /*輸入學生成績*/
GetSumAver(score, n, sum, aver); /*計算總分和平均分*/
printf("Before sort:\n");
Print(num, score, n, sum, aver);

Sort(num, score, n, sum, aver); /*排名次*/
printf("After sort:\n");
Print(num, score, n, sum, aver);

printf("Please enter searching number:");
scanf("%ld", &x); /*以長整型格式輸入待查找學生的學號*/
pos = Search(num, n, x); /*名次查詢*/
if (pos != -1)
{
printf("position:\t NO \t MT \t EN \t PH \t SUM \t AVER\n");
printf("%8d\t%4ld\t%4d\t%4d\t%4d\t%5d\t%5.0f\n",
pos+1,num[pos], score[pos][0],score[pos][1],
score[pos][2], sum[pos],aver[pos]);
}
else
{
printf("Not found!\n");
}
}

/* 函數功能:輸入某班學生期末考試三門課程成績
函數參數:長整型數組num,存放學生學號
整型數組score,存放學生成績
整型變數n,存放學生人數
函數返回值:無
*/
void Input(long num[], int score[][COURSE], int n)
{
int i, j;

for (i=0; i<n; i++)
{
scanf("%ld", &num[i]);
for (j=0; j<COURSE; j++)
{
scanf("%d", &score[i][j]);
}
}
}

/* 函數功能:計算每個學生的總分和平均分
函數參數: 整型數組score,存放學生成績
整型變數n,存放學生人數
整型數組sum,計算得到的每個學生的總分
實型數組aver,計算得到的每個學生的平均分
函數返回值:無
*/
void GetSumAver(int score[][COURSE], int n, int sum[], float aver[])
{
int i, j;

for (i=0; i<n; i++)
{
sum[i] = 0;
for (j=0; j<COURSE; j++)
{
sum[i] = sum[i] + score[i][j];
}
aver[i] = (float)sum[i] / COURSE;
}
}

/* 函數功能:按總分成績由高到低排出成績的名次
函數參數:長整型數組num,存放學生學號
整型數組score,存放學生成績
整型變數n,存放學生人數
整型數組sum,存放每個學生的總分
實型數組aver,存放每個學生的平均分
函數返回值:無
*/
void Sort(long num[],int score[][COURSE], int n, int sum[], float aver[])
{
int i, j, k, m;
int temp1;
long temp2;
float temp3;

for (i=0; i<n-1; i++)
{
k = i;
for (j=i+1; j<n; j++)
{
if (sum[j] > sum[k]) k = j;
}
if (k != i)
{
temp1 = sum[k]; sum[k] = sum[i]; sum[i] = temp1;
temp2 = num[k]; num[k] = num[i]; num[i] = temp2;
temp3 = aver[k]; aver[k] = aver[i]; aver[i] = temp3;
for (m=0; m<COURSE; m++)
{
temp1 = score[k][m];
score[k][m] = score[i][m];
score[i][m] = temp1;
}
}
}
}

/* 函數功能: 列印名次表,表格內包括學生編號、各科分數、總分和平均分
函數參數: 長整型數組num,存放學生學號
整型數組score,存放學生成績
整型變數n,存放學生人數
整型數組sum,存放每個學生的總分
實型數組aver,存放每個學生的平均分
函數返回值:無
*/
void Print(long num[], int score[][COURSE], int n,
int sum[], float aver[])
{
int i, j;

printf(" NO \t| MT \t EN \t PH \t SUM \t AVER\n");
printf("----------------------------------------------------\n");
for (i=0; i<n; i++)
{
printf("%ld\t| ", num[i]);
for (j=0; j<COURSE; j++)
{
printf("%4d\t", score[i][j]);
}
printf("%5d\t%5.0f\n", sum[i], aver[i]);
}
}

/* 函數功能:在學號數組中順序查找學生的學號
函數參數:長整型數組num,存放學生學號
整型變數n,存放學生人數
長整型變數x,存放待查找學生的學號
函數返回值:找到時,返回學生學號在學號數組中的下標位置,否則返回值-1
*/
int Search(long num[], int n, long x)
{
int i;

for (i=0; i<n; i++)
{
if (num[i] == x) return(i);
}
return (-1);
}

『捌』 C語言試題,求答案

一、選擇題(共10個)

  1. ③ 2.③ 3.① 4.④ 5.③ 6.① 7.④ 8.① 9.① 10.①

二、填空題(共7個)

  1. -32768 ~ 32767(16位機)

  2. 0

  3. 下劃線 下劃線

  4. double a=0.618

  5. 11、6

三、判斷題(共5個)

  1. X

四、閱讀以下C語言程序,以下程序的程序輸出的結果是2,1。

五、有兩個浮點數a=5.2,b=3.1,計算並輸出它們的和、差、積、商。

//#include "stdafx.h"//vc++6.0加上這一行.

#include "stdio.h"//

void main(void){

double a=5.2,b=3.1;

printf("a + b = %f a - b = %f a x b = %f a÷ b = %f ",a+b,a-b,a*b,a/b);

}

『玖』 c語言二級考試題及答案

2011年3月全國計算機等級考試二級筆試試卷
C語言程序設計
(考試時間90分鍾,滿分100分)

一、 選擇題(1-10,21-40每題2分,11-20每題1分,共70分)

(1)下列關於棧敘述正確的是
A)棧頂元素最先能被刪除
B)棧頂元素最後才能被刪除
C)棧底元素永遠不能被刪除
D)以上三種說法都不對

(2)下列敘述中正確的是
A)有一個以上根結點的數據結構不一定是非線性結構
B)只有一個根結點的數據結構不一定是線性結構
C)循環鏈表是非線性結構
D)雙向鏈表是非線性結構

(3)某二叉樹共有7個結點,其中葉子結點只有1個,則該二叉樹的深度為(假設根結點在第1層)
A)3 B)4 C)6 D)7

(4)在軟體開發中,需求分析階段產生的主要文檔是
A)軟體集成測試計劃 B)軟體詳細設計說明書
C)用戶手冊 D)軟體需求規格說明書

(5)結構化程序所要求的基本結構不包括
A)順序結構 B)GOTO跳轉
C)選擇(分支)結構 D)重復(循環)結構

(6)下面描述中錯誤的是
A)系統總體結構圖支持軟體系統的詳細設計
B)軟體設計是將軟體需求轉換為軟體表示的過程
C)數據結構與資料庫設計是軟體設計的任務之一
D)PAD圖是軟體詳細設計的表示工具

(7)負責資料庫中查詢操作的資料庫語言是
A)數據定義語言
B)數據管理語言
C)數據操縱語言
D)數據控制語言

(8)一個教師可講授多門課程,一門課程可由多個教師講授。則實體教師和課程間的聯系是
A)1:1聯系 B)1:m聯系
C)m:1聯系 D)m:n聯系

(9)有三個關系R、S和T如下:


則由關系R和S得到關系T的操作是
A)自然連接 B)交 C)除 D)並

(10)定義無符號整數類為UInt,下面可以作為類UInt實例化值的是
A)-369 B)369 C)0.369 D)整數集合{1,2,3,4,5}

(11)計算機高級語言程序的運行方法有編譯執行和解釋執行兩種,以下敘述中正確的是
A)C語言程序僅可以編譯執行
B)C語言程序僅可以解釋執行
C)C語言程序既可以編譯執行又可以解釋執行
D)以上說法都不對

(12)以下敘述中錯誤的是
A)C語言的可執行程序是由一系列機器指令構成的
B)用C語言編寫的源程序不能直接在計算機上運行
C)通過編譯得到的二進制目標程序需要連接才可以運行
D)在沒有安裝C語言集成開發環境的機器上不能運行C源程序生成的.exe文件

(13)以下選項中不能用作C程序合法常量的是
A)1,234 B)'123'
C)123 D)"\x7G"

(14)以下選項中可用作C程序合法實數的是
A).1e0 B)3.0e0.2
C)E9 D)9.12E

(15)若有定義語句:inta=3,b=2,c=1;,以下選項中錯誤的賦值表達式是
A)a=(b=4)=3; B)a=b=c+1;
C)a=(b=4)+c; D)a=1+(b=c=4);

(16)有以下程序段
char name[20];
int num;
scanf("name=%s num=%d",name;&num);
當執行上述程序段,並從鍵盤輸入:name=Lili num=1001<回車>後,name的值為
A)Lili B)name=Lili C)Lili num= D)name=Lili num=1001

(17)if語句的基本形式是:if(表達式)語句,以下關於「表達式」值的敘述中正確的是
A)必須是邏輯值 B)必須是整數值
C)必須是正數 D)可以是任意合法的數值

(18)有以下程序
#include
main()
{ int x=011;
printf("%d\n",++x);
}
程序運行後的輸出結果是
A)12 B)11 C)10 D)9

(19)有以下程序
#include
main()
{ int s;
scanf("%d",&s);
while(s>0)
{ switch(s)
{ case1:printf("%d",s+5);
case2:printf("%d",s+4); break;
case3:printf("%d",s+3);
default:printf("%d",s+1);break;
}
scanf("%d",&s);
}
}
運行時,若輸入1 2 3 4 5 0<回車>,則輸出結果是
A)6566456 B)66656 C)66666 D)6666656

(20)有以下程序段
int i,n;
for(i=0;i<8;i++)
{ n=rand()%5;
switch (n)
{ case 1:
case 3:printf("%d\n",n); break;
case 2:
case 4:printf("%d\n",n); continue;
case 0:exit(0);
}
printf("%d\n",n);
}
以下關於程序段執行情況的敘述,正確的是
A)for循環語句固定執行8次 B)當產生的隨機數n為4時結束循環操作
C)當產生的隨機數n為1和2時不做任何操作D)當產生的隨機數n為0時結束程序運行

(21)有以下程序
#include
main()
{ char s[]="012xy\08s34f4w2";
int i,n=0;
for(i=0;s[i]!=0;i++)
if(s[i]>='0'&&s[i]<='9') n++;
printf("%d\n",n);
}
程序運行後的輸出結果是
A)0 B)3 C)7 D)8

(22)若i和k都是int類型變數,有以下for語句
for(i=0,k=-1;k=1;k++) printf("*****\n");
下面關於語句執行情況的敘述中正確的是
A)循環體執行兩次B)循環體執行一次C)循環體一次也不執行D)構成無限循環

(23)有以下程序
#include
main()
{ char b,c; int i;
b='a'; c='A';
for(i=0;i<6;i++)
{ if(i%2) putchar(i+b);
else putchar(i+c);
} printf("\n");
}
程序運行後的輸出結果是
A)ABCDEF B)AbCdEf C)aBcDeF D)abcdef

(24)設有定義:doublex[10],*p=x;,以下能給數組x下標為6的元素讀入數據的正確語句是
A)scanf("%f",&x[6]); B)scanf("%lf",*(x+6));
C)scanf("%lf",p+6); D)scanf("%lf",p[6]);

(25)有以下程序(說明:字母A的ASCII碼值是65)
#include
void fun(char *s)
{ while(*s)
{ if(*s%2) printf("%c",*s);
s++;
}
}
main()
{ char a[]="BYTE";
fun(a); printf("\n");
}
程序運行後的輸出結果是
A) BY B) BT C) YT D) YE

(26)有以下程序段
#include
main()
{ …
while( getchar()!='\n');

}
以下敘述中正確的是
A)此while語句將無限循環
B) getchar()不可以出現在while語句的條件表達式中
C)當執行此while語句時,只有按回車鍵程序才能繼續執行
D)當執行此while語句時,按任意鍵程序就能繼續執行

(27)有以下程序
#include
main()
{ int x=1,y=0;
if(!x) y++;
else if(x==0)
if (x) y+=2;
else y+=3;
printf("%d\n",y);
}
程序運行後的輸出結果是
A)3 B)2 C)1 D) 0

(28)若有定義語句:chars[3][10],(*k)[3],*p;,則以下賦值語句正確的是
A)p=s; B)p=k; C)p=s[0]; D)k=s;

(29)有以下程序
#include
void fun(char *c)
{ while(*c)
{ if(*c>='a'&&*c<='z') *c=*c-('a'-'A');
c++;
}
}
main()
{ char s[81];
gets(s); fun(s); puts(s):
}
當執行程序時從鍵盤上輸入Hello Beijing<回車>,則程序的輸出結果是
A)hello beijing B)Hello Beijing C)HELLO BEIJING D)hELLO Beijing

(30)以下函數的功能是:通過鍵盤輸入數據,為數組中的所有元素賦值。
#include
#define N 10
void fun(int x[N])
{ int i=0;
while(i<>
}
在程序中下劃線處應填入的是
A)x+i B)&x[i+1]C)x+(i++) D)&x[++i]

(31)有以下程序
#include
main()
{ char a[30],b[30];
scanf("%s",a);
gets(b);
printf("%s\n %s\n",a,b);
}
程序運行時若輸入:
how are you? I am fine<回車>
則輸出結果是
A)how are you? B)how I am fine are you? I am fine
C)how are you? I am fine D)row are you?

(32)設有如下函數定義
int fun(int k)
{ if (k<1) return 0;
else if(k==1) return 1;
else return fun(k-1)+1;
}
若執行調用語句:n=fun(3);,則函數fun總共被調用的次數是
A)2 B)3 C)4 D)5

(33)有以下程序
#include
int fun (int x,int y)
{ if (x!=y) return ((x+y);2);
else return (x);
}
main()
{ int a=4,b=5,c=6;
printf("%d\n",fun(2*a,fun(b,c)));
}
程序運行後的輸出結果是 A)3 B)6 C)8 D)12

(34)有以下程序
#include
int fun()
{ static int x=1;
x*=2;
return x;
}
main()
{ int i,s=1;
for(i=1;i<=3;i++) s*=fun();
printf("%d\n",s);
}
程序運行後的輸出結果是 A)0 B)10 C)30 D)64

(35)有以下程序
#include
#define S(x) 4*(x)*x+1
main()
{ int k=5,j=2;
printf("%d\n",S(k+j));
}
程序運行後的輸出結果是 A)197 B)143 C)33 D)28

(36)設有定義:struct {charmark[12];int num1;double num2;} t1,t2;,若變數均已正確賦初值,則以下語句中錯誤的是
A)t1=t2; B)t2.num1=t1.num1;C)t2.mark=t1.mark; D)t2.num2=t1.num2;

(37)有以下程序
#include
struct ord
{ int x,y;}dt[2]={1,2,3,4};
main()
{
struct ord *p=dt;
printf("%d,",++(p->x));printf("%d\n",++(p->y));
}
程序運行後的輸出結果是 A)1,2 B)4,1 C)3,4 D)2,3

(38)有以下程序
#include
struct S
{ int a,b;}data[2]={10,100,20,200};
main()
{ struct S p=data[1];
printf("%d\n",++(p.a));
}
程序運行後的輸出結果是 A)10 B)11 C)20 D)21

(39)有以下程序
#include
main()
{ unsigned char a=8,c;
c=a>>3;
printf("%d\n",c);
}
程序運行後的輸出結果是 A)32 B)16 C)1 D)0

(40)設fp已定義,執行語句fp=fopen("file","w");後,以下針對文本文件file操作敘述的選項中正確的是
A)寫操作結束後可以從頭開始讀 B)只能寫不能讀
C)可以在原有內容後追加寫 D)可以隨意讀和寫

二、填空題
(1)有序線性表能進行二分查找的前提是該線性表必須是 【1】 存儲的。

(2)一棵二叉樹的中序遍歷結果為DBEAFC,前序遍歷結果為ABDECF,則後序遍歷結果為 【2】 。

(3)對軟體設計的最小單位(模塊或程序單元)進行的測試通常稱為【3】 測試

(4)實體完整性約束要求關系資料庫中元組的 【4】 屬性值不能為空。

(5)在關系A(S,SN,D)和關系B(D,CN,NM)中,A的主關鍵字是S,B的主關鍵字是D,則稱 【5】 是關系A的外碼。


(6)以下程序運行後的輸出結果是 【6】。
#include
main()
{ int a;
a=(int)((double)(3/2)+0.5+(int)1.99*2);
printf("%d\n",a);
}

(7)有以下程序
#include
main()
{ int x;
scanf("%d",&x);
if(x>15) printf("%d",x-5);
if(x>10) printf("%d",x);
if(x>5) printf("%d\n",x+5);
}
若程序運行時從鍵盤輸入12<回車>,則輸出結果為 【7】 。

(8)有以下程序(說明:字元0的ASCII碼值為48)
#include
main()
{ char c1,c2;
scanf("%d",&c1);
c2=c1+9;
printf("%c%c\n",c1,c2);
}
若程序運行時從鍵盤輸入48<回車>,則輸出結果為 【8】 。

(9)有以下函數
void prt(char ch,int n)
{ int i;
for(i=1;i<=n;i++)
printf(i%6!=0?"%c":"%c\n",ch);
}
執行調用語句prt('*',24);後,函數共輸出了 【9】 行*號。

(10)以下程序運行後的輸出結果是 【10】。
#include
main()
{ int x=10,y=20,t=0;
if(x==y)t=x;x=y;y=t;
printf("%d %d\n",x,y);
}

(11)己知a所指的數組中有N個元素。函數fun的功能是,將下標k(k>0)開始的後續元素全部向前移動一個位置。請填空。
void fun(int a[N],int k)
{ int i;
for(i=k;i
}

(12)有以下程序,請在 【12】 處填寫正確語句,使程序可正常編譯運行。
#include
【12】 ;
main()
{ double x,y,(*p)();
scanf("%lf%lf",&x,&y);
p=avg;
printf("%f\n",(*p)(x,y));
}
double avg(double a,double b)
{ return((a+b)/2);}

(13)以下程序運行後的輸出結果是 【13】。
#include
main()
{ int i,n[5]={0};
for(i=1;i<=4;i++)
{ n[i]==n[i-1]*2+1; printf("%d",n[i]); }
printf("\n");
}

(14)以下程序運行後的輸出結果是 【14】。
#include
#include
#include
main()
{ char *p; int i;
p=(char *)malloc(sizeof(char)*20);
strcpy(p,"welcome");
for(i=6;i>=0;i--) putchar(*(p+i));
printf("\n-"); free(p);
}

(15)以下程序運行後的輸出結果是 【15】。
#include
main()
{ FILE *fp; int x[6]={1,2,3,4,5,6},i;
fp=fopen("test.dat","wb");
fwrite(x,sizeof(int),3,fp);
rewind(fp);
fread(x,sizeof(int),3,fp);
for(i=0;i<6;i++) printf("%d",x[i]);
printf("\n");
fclose(fp);
}

2011年3月全國計算機等級考試二級筆試試卷
C語言程序設計答案

一.選擇題1-5 ABDDB
6-10 ACDCB 11-15 ADBAA
16-20 ADCAD 21-25 BDBCD
26-30 CDCCC 31-35 BBBDB
36-40 CDDCB
二,填空題
1) 順序 2) DEBFCA 3) 單元測試 4) 主鍵 5) D 6) 3 7) 1217
8) 09 9) 4 10) 20 0 11) i-1 12) double avg(doublea,double b) 13) 13715
14) e(E)moclew 15) 123456
2010年9月全國計算機等級考試二級C筆試試卷答案
一、選擇題
1~5: BCDAA 6~10:DDCCA 11~15:CBBAD 16~20: DAACB
21~25: BCBDC 26~30 :CBDDA 31~35:ACBCD 36~40 :BACBD

二、填空
1.1DCBA2345 2.n-1 3.25 4.結構化 5.物理設計 6.2008
7.15 8.非0 9. 1 4 13 40 10.i 11.2
12.a[row][col] 13.3 14.*s 15.FILE

『拾』 c語言二級考試題目

第一題:\141的值是"a"(a的8進制ASCII碼值是141),\\的值是"\",所以s列印出來就是\141aabc,當然後面有一個\t,所以長度是9。
第二題:32位機器中,int值佔4個位元組,這里char佔4個位元組(由於32位機器按4位元組對齊,char佔一個位元組後,剩下的3個位元組不足以放下4個位元組的float,所以這里char後面的3個位元組會被浪費,看起來char佔了4個位元組),float佔4個位元組。
union裡面的所有數據一起佔用一塊內存,此內存為union內佔用內存最多的數據的大小,也就是int[2]的大小,所以union佔8個位元組。
加起來就是20個位元組。
不是你把題抄錯了,就是沒有正確答案,或者沒說明機器是多少位的機器。現在一般不說明機器的位數,默認情況下都是32位的。

第三題:ps=s後,ps會指向s的第一行第一列的位置,ps+1和*(ps+1)都等於s第二行第一列的地址,對ps的操作都是對內存地址的操作,答案中只有ps[ ][ ]能取到s中的元素。
第四題:因為pb比b1大3,所以while會循環3次,第一次因為*bp 從第三個字元開始,所以*bp = 「ddwer」,所以b2=「ddwer」,第二次b2=「oddwer」,第三次b2=「goddwer」,所以strlen(b2)最終等於7。
第五題:答案是3,ASCII值中「\08」表示空格,所以s實際上等於「012xy」,而n記錄字元值在0到9之間的字元的個數,所以n=3。