二級c語言程序代碼158道,c語言二級編程

本文目錄一覽:

求C語言編程題

邏輯運算和判斷選取控制

1、編製程序要求輸入整數a和b,若a2+b2大於100,則輸出a2+b2百位以上的數字,否則輸出兩數字之和。

#includestdio.h

int main()

{

int a,b;

printf(“input two number:”);

scanf(“%d %d”,a,b);

if((a*a+b*b)=100)

printf(“\n %d”,(a*a+b*b)/100);

else

printf(“\n %d”,a+b);

getch();

}

2、試編程判斷輸入的正整數是否既是5又是7的整數倍數。若是,則輸出yes;否則輸出no。

#includestdio.h

int main()

{

int a;

printf(“input a number:”);

scanf(“%d”,a);

if(a%5==0 a%7==0)

printf(“yes”);

else

printf(“no”);

getch();

}

指針

1、編一程序,將字符串computer賦給一個字符數組,然後從第一個字母開始間隔的輸出該串,請用指針完成。

#includestdio.h

int main()

{

char string[]=”computer”;

char *p=string;

while(*p)

{

printf(“%c”,*p);

p++;

p++;

}

getch();

}

2、輸入一個字符串string,然後在string裡面每個字母間加一個空格,請用指針完成。

#includestdio.h

#includeCONIO.H

#includeSTDLIB.H

#define max 100

char * copyString;

void copy(char *,char*);

void insert(char *);

int main()

{

char * string;

string = (char *)malloc(max*sizeof(char));

scanf(“%s”,string);

insert(string);

printf(“%s”,string);

getch();

return 0;

}

void copy(char * c,char * s)

{

while(*s!=’\0′)

{

*c=*s;

s++;

c++;

}

*c=’\0′;

}

void insert(char * s)

{

copyString = (char*)malloc(2*max*sizeof(char));

copy(copyString,s);

while(*copyString!=’\0′)

{

*s=*copyString;

s++;

copyString++;

*s=’ ‘;

s++;

}

*s=’\0′;

}

一.選擇:

1.給出以下定義:

char acX[ ]= “abcdefg”;

char acY[ ]= {‘a’,’b’,’c’,’d’,’e’,’f’,’g’};

則正確的敘述為( )

A) 數組acX和數組acY等價 B) 數組acX和數組acY的長度相同

C) 數組acX的長度大於數組acY的長度 D) 數組acX的長度小於數組acY的長度

答案:C

2.

void example(char acHello[])

{

printf(“%d”, sizeof(acHello));

return;

}

void main()

{

char acHello[] = “hello”;

example(acHello);//數組名稱作參數,傳的是地址,一個地址佔四個字節

return;

}

的輸出是

A 4 B 5 C 6 D不確定

答案:A

3. 有以下程序段

char acArr[]= “ABCDE”;

char *pcPtr;

for(pcPtr = acArr; pcPtr acArr + 5; pcPtr++)

{

printf(“%s\n”, pcPtr);

}

return;

輸出結果是( )

A) ABCD B) A C) E D) ABCDE

B D BCDE

C C CDE

D B DE

E A E

答案:D

4.在中斷中,不能同步獲取信號量,但是可以釋放信號量。

A.正確 B.錯誤

答案:A

5.以下敘述中不正確的是( )

A) 在不同的函數中可以使用相同名字的變量

B) 函數中的形式參數是局部變量

C) 在一個函數內定義的變量只在本函數範圍內有效

D) 在一個函數內的複合語句中定義的變量在本函數範圍內有效(複合語句指函數中的成對括號構成的代碼)

答案:D

6.設有如下定義:

unsigned long pulArray[] = {6, 7, 8, 9, 10};

unsigned long *pulPtr;

則下列程序段的輸出結果為( )

pulPtr = pulArray;

*(pulPtr + 2) += 2;

printf (“%d,%d\n”, *pulPtr, *(pulPtr + 2));

A)8,10 B)6,8 C)7,9 D)6,10

答案:D

7. 定義結構體時有下面幾種說法,請指出正確的(多選):______

A、結構體中的每個部分,最好進行四字節對齊;

B、結構體的總長度最好是四字節對齊;

C、結構中成員的存放不用考慮字節對齊情況;

答案:A、B

8.void example()

{

int i;

char acNew[20];

for(i = 0; i 10; i++)

{

acNew[i] = ‘0’;

}

printf(“%d\n”, strlen(acNew));

return;

}

的輸出為( )

A 0 B 10 C 11 D不確定

答案:D

9.switch(c)中的c的數據類型可以是char、long、float、unsigned、bool. ( )

A. 正確 B. 錯誤

答案:B

10. 網絡上傳輸的字節序默認是大字節的,如果主機是小字節序,在網絡通信時則須進行字節序轉換;如果主機是

大字節序,為了程序的一致性及可移植性,最好也在程序中加上字節序轉換的操作(空操作)。

A. 正確 B.錯誤

答案:A

11. struct stu

{

int num;

char name[10];

int age;

};

void fun(struct stu *p)

{

printf(“%s\n”, (*p).name);

return;

}

void main()

{

struct stu students[3]={ {9801,”Zhang”,20},

{9802,”Wang”,19},

{9803,”Zhao”,18} };

fun(students + 2);

return;

}

輸出結果是( )

A) Zhang B)Zhao C) Wang D) 18

答案:B

12.以下程序運行後,輸出結果是( )

void main( )

{

char *szStr = “abcde”;

szStr += 2;

printf(“%lu \n”,szStr);

return;

}

A cde B 字符c的ASCLL碼值

C “abcde”這個常串中字符c所在的地址 D 出錯

答案:C

13. 在X86下,有下列程序

#include stdio.h

void main()

{

union

{

int k;

char i[2];

}*s,a;

s = a;

s-i[0] = 0x39;

s-i[1] = 0x38;

printf(“%x\n”, a.k);

}

輸出結果是( )

A) 3839 B) 3938 C) 380039 D) 不可預知

答案:D

14. 全局變量可以定義在被多個.C文件包含着的頭文件中。

A. 正確 B. 錯誤

答案:B

15.void example()

{

int i;

char acNew[20] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

for(i = 0; i 10; i++)

{

acNew[i] = ‘0’;

}

printf(“%d\n”, strlen(acNew));

return;

}

的輸出為:

A 0 B 10 C 11 D不確定

答案:B

16.下列定義正確的有(多選):( )

A: char *pcPtr = “abcd”;

B: char pc[4]= “abcd”;

C: char pc[] = “abcd”;

D: char pc[] = ‘abcd’;

E: char pc[] = {‘a’,’b’,’c’,’d’,’\0′};

F: char pc[] = ‘a’ ‘b’ ‘c’ ‘d’;

答案:ACE

17.在函數內部定義的變量(靜態變量、寄存器變量等特殊變量除外)的內存是在棧內存中,所以在定義函數內部的變量的時候,一定要保證棧不能夠溢出。如果臨時變量

佔用空間較大,應該使用內存申請的方式,這樣該變量指向的內存就是在堆內存中了。

A. 正確 B. 錯誤

答案:A

18.局部變量可以和全局變量重名,編譯的時候不會出現錯誤,但一旦不小心,就可能導致使用錯誤變量,所以在定時局部變量的時候,不要和全局變量重名。

A. 正確 B. 錯誤

答案:A

19.設有以下宏定義:

#define N 3

#define Y(n) ((N+1)*n) /*這種定義在編程規範中是嚴格禁止的*/

則執行語句:z = 2 * (N + Y(5 + 1));後,z的值為( )

A) 出錯 B) 42 C) 48 D)54

答案:C

20. int *(*ptr)();

則以下敘述中正確的是( )

A) ptr是指向一維組數的指針變量

B) ptr是指向int型數據的指針變量

C) ptr是指向函數的指針,該函數返回一個int型數據

D) ptr是指向函數的指針,該函數的返回值是指向int型數據的指針

答案:D

21. 0x12345678 在採用BigEndian中內存的排列順序是______,在採用LittleEndian內存中的排列順序是_______.

(答案從左到右內存地址依次增加)

A.12 34 56 78 B.34 12 78 56

C.78 56 34 12 D.56 78 12 34

答案:A C

二、填空:

1. .struct tagAAA

{

unsigned char ucId:1;

unsigned char ucPara0:2;

unsigned char ucState:6;

unsigned char ucTail:4;

unsigned char ucAvail;

unsigned char ucTail2:4;

unsigned long ulData;

}AAA_S;

問:AAA_S在字節對齊分別為1、4的情況下,佔用的空間大小是多少?

答案:9 12

2.typedef struct tagTest

{

UCHAR ucFlag;

ULONG ulLen;

}TEST_S;

TEST_S test[10];

四字節對齊方式時: sizeof(TEST_S) = ______, sizeof(test)________.

答案:8 80

3

char acHello[] = “hello\0world”;

char acNew[15] = {0};

strcpy(acNew,acHello);

strlen(acNew) = _____

sizeof(acHello) = ______

答案:5 12

4.#pragma pack(4)/*編譯選項,表示4字節對齊*/

int main(int argc, char* argv[])

{

struct tagTest1

{

short a;

char d;

long b;

long c;

};

struct tagTest2

{

long b;

short c;

char d;

long a;

};

struct tagTest3

{

short c;

long b;

char d;

long a;

};

struct tagTest1 stT1;

struct tagTest2 stT2;

struct tagTest3 stT3;

printf(“%d %d %d”, sizeof(stT1), sizeof(stT2), sizeof(stT3));

return 0;

}

#pragma pack()(編譯選項結束)

請問輸出結果是:_________

答案:12 12 16

5. enum ENUM_A

{

X1,

Y1,

Z1 = 5,

A1,

B1

};

enum ENUM_A enumA = Y1;

enum ENUM_A enumB = B1;

請問 enumA = ____; enumB = ______;

答案:1 7

6.以下程序的輸出結果是________.

#include stdio.h

int fun(int x,int y)

{

static int m = 0;8

static int i = 2;3

i += m + 1;12

m = i + x + y;

return m;

}

void main()

{

int j = 4;

int m = 1;

int k;

k = fun(j, m);

printf(“%d,”, k);

k=fun(j, m);

printf(“%d\n”, k);

return;

}

答案:8 17

7.以下程序的輸出結果為________

#define CIR(r) r*r /*請注意這種定義的缺陷,不允許這麼定義*/

void main()

{

int a = 1;

int b = 2;

int t;

t = CIR(a + b);

printf(“%d\n”, t);

return;

}

答案:5

8.在VRP中,實現了strncpy類似的函數,定義如下:

#define CHAR char

#define ULONG unsigned long

#define VOID void

#define MACRO_COPYWORLDLENGTH 4

CHAR *VOS_strncpy(CHAR *pcDest, const CHAR *szSrc, ULONG ulLength)

{

CHAR *pcPoint = pcDest;

if(( NULL == szSrc ) || ( NULL == pcDest ) ))

{

return NULL;

}

while(ulLength (*pcPoint = *szSrc))/*這裡採用了在判斷語句中賦值的方式(*pcPoint = *szSrc),建議盡量不使用*/

{

pcPoint++;

szSrc++;

ulLength–;

}

if(!ulLength)

{

*pcPoint = ‘\0’;

}

return pcDest;

}

VOID main(VOID)

{

CHAR szStrBuf[ ] = “1234567890”;

CHAR szStrBuf1[ ] = “1234567890”;

CHAR *szHelloWorld = “Hello World!”;

strncpy(szStrBuf, szHelloWorld, MACRO_COPYWORLDLENGTH);

VOS_strncpy(szStrBuf1, szHelloWorld, MACRO_COPYWORLDLENGTH);

printf(“%s %s”, szStrBuf, szStrBuf1);

}

程序的輸出結果為________

答案:Hell567890 Hell

9.

char acHello[] = “hello\0world”;

char acNew[15] = {0};

memcpy(acNew,acHello,12);

strlen(acNew) = _____

sizeof(acHello) = _____

答案:5 12

10. typedef struct Head

{

UCHAR aucSrc[6];

ULONG ulType;

} HEAD_S;

在強制一字節對齊情況下,請指出sizeof(HEAD_S) = ________;

在強制二字節對齊情況下,請指出sizeof(HEAD_S) = ________;

在強制四字節對齊情況下,請指出sizeof(HEAD_S) = ________;

答案:10 10 12

11.union tagAAAA

{

struct

{

char ucFirst;

short usSecond;

char ucThird;

}half;

long lI;

}number;

struct tagBBBBB

{

char ucFirst;

short usSecond;

char ucThird;

short usForth;

}half;

struct tagCCCC

{

struct

{

char ucFirst;

short usSecond;

char ucThird;

}half;

long lI;

};

在字節對齊為1下,sizeof(union tagAAAA)、sizeof(struct tagBBBBB)、sizeof(struct tagCCCC)是____ ____ _____

在字節對齊為4下,sizeof(union tagAAAA)、sizeof(struct tagBBBBB)、sizeof(struct tagCCCC)是____ ____ _____

答案:4 6 8

8 8 12

12.struct tagABC

{

char cB;

short sC;

char cD;

long lA;

}*pAbc;

pAbc = 0x100000;

那麼pAbc+0x100 = 0x_________; (ULONG)pAbc + 0x100 = 0x_________;(ULONG *)pAbc + 0x100 = 0x_________;(char *)pAbc + 0x100 = 0x_______;

答案:100C00 100100 100400 100100

13.unsigned long FUNC_C ( unsigned long ulAction )

{

unsigned long ulResult = 0 ;

switch ( ulAction )

{

case ACTION_A:

{

ulResult += 1 ;

break ;

}

case ACTION_B:

{

ulResult += 1 ;

}

default:

{

ulResult += 1 ;

}

}

printf( “ulResult = %u”, ulResult ) ;

return ulResult ;

}

當輸入為ACTION_B時,輸出結果為: ulResult = _________;

答案:2(因為此分支沒有break分支)

14.下面的代碼中,函數Test執行完畢後,打印的結果是 _____。

unsigned long g_ulGlobal = 0;

void GlobalInit(unsigned long ulArg)

{

ulArg = 0x01;

return;

}

void Test()

{

GlobalInit(g_ulGlobal);

printf(“%lu”, g_ulGlobal);

return;

}

答案:0

15.以下程序的輸出的結果是___________

int x = 3;

void incre();

void main()

{ int i;

for (i = 1; i x; i++)

{

incre();

}

return;

}

void incre()

{

static int x = 1;

x *= (x + 1);

printf(“%d “,x);

return;

}

答案:2 6

16.以下程序的輸出的結果是___________

#pragma pack(4)/*四字節對齊*/

int main(int argc, char* argv[])

{

unsigned char puc[4];

struct tagPIM

{

unsigned char ucPim1;

unsigned char ucData0:1;

unsigned char ucData1:2;

unsigned char ucData2:3;

}*pstPimData;

pstPimData = (struct tagPIM *)puc;

memset(puc, 0, 4);

pstPimData-ucPim1 = 1;

pstPimData-ucData0 = 2;

pstPimData-ucData1 = 3;

pstPimData-ucData2 = 4;

printf(“%02X %02X %02X %02X\n”, puc[0], puc[1], puc[2], puc[3]);

return 0;

}

#pragma pack()/*恢復缺省對齊方式*/

答案:01 26 00 00

17.

char *pcColor = “blue1” ;

char acColor[] = “blue1” ;

strlen(pcColor) = _____

strlen(acColor) = _____

sizeof(pcColor) = _____

sizeof(acColor) = _____

答案:5 5 4 6

18.

char str[] = “\\\0”;

char *p = str;

int n = 1000;

請計算

sizeof (str ) = ____________

sizeof ( p ) = ______________

sizeof ( n ) = ______________

答案:3 4 4

19.UCHAR *pucCharArray[10][10];

typedef union unRec

{

ULONG ulIndex;

USHORT usLevel[6];

UCHAR ucPos;

}REC_S;

REC_S stMax,*pstMax;

四字節對齊方式時: sizeof(pucCharArray) = __指針的數組,每個指針的地址都是4字節____, sizeof(stMax)=_______, sizeof(pstMax)=__地址______,sizeof(*pstMax)=________.

答案:400 12 4 12

20.typedef union unHead

{

UCHAR aucSrc [6];

struct tagContent

{

UCHAR ucFlag[3];

ULONG ulNext;

}Content;

}HEAD_S;

32CPU,VC編譯環境下:

在強制一字節對齊情況下,請指出sizeof(HEAD_S) = ________;

在強制二字節對齊情況下,請指出sizeof(HEAD_S) = ________;

在強制四字節對齊情況下,請指出sizeof(HEAD_S) = ________;

答案:7 8 8

21.

UCHAR *pszTest = “hello”;

UCHAR aucTest[] = “hello”;

請問 sizeof(pszTest) = _____ , sizeof(*pszTest) = ______, sizeof(aucTest) = ______.

答案:4 1 6

22. struct BBB

{

long lNum;

char *pcName;

short sDate;

char cHa[2];

short sBa[6];

}*p;

p = 0x100000;

p + 0x1 = 0x____

(unsigned long)p + 0x1 = 0x______

(unsigned long *)p + 0x1 = 0x______

(char *)p + 0x1 = 0x______

答案:100018 100001 100004 100001

23.在4字節對齊的情況:

typedef struct tagRec

{

long lA1;

char cA2;

char cA3;

long lA4;

long lA5;

} REC_S;

void main(int argc, char *argv[])

{

REC_S stMax ;

printf(“\r\n sizeof(stMax)= %d”,sizeof(stMax));

return;

}

輸出結果為:

sizeof(stMax)=____

答案:16

24.void main ()

{

unsigned long ulA = 0x11000000;

printf(“\r\n%x”,*(unsigned char *)ulA);

return;

}

輸出結果為:

答案:0

三、指出下列程序中導致不能出現預期結果的唯一錯誤(不考慮編程規範錯誤)

1.下面程序用於輸出用戶輸入的字符串。請指出其中的問題

#define OK 0

#define ERR 1

#define ERROR (-1)

#define BUFFER_SIZE 256

int GetMemory(char **ppszBuf, int num)

{

if( NULL == ppszBuf )

{

ASSERT(0);

return ERROR;

}

*ppszBuf = (char *)malloc(num);

if(NULL == *ppszBuf)

{

return ERROR;

}

return OK;

}

void Test(void)

{

char *pcStr = NULL;

if(OK == GetMemory(pcStr, BUFFER_SIZE))

{

scanf(“%s”,pcStr);/*這裡假定BUFFER_SIZE足夠大,不會導致越界*/

printf(pcStr);

free(pcStr);

}

return;

}

答案:要採用printf(“%s”, str)的形式打印,否則如果輸入為%s, %d等形式可能會導致不可知現象。

2.此函數實現把32位IP地址(主機序)以字符串的方式打印出來,請找出代碼中的錯誤:

char *IpAddr2Str(unsigned long ulIpAddr)

{

char szIpAddr[32];

(void)VOS_sprintf(szIpAddr, “%d.%d.%d.%d”, ulIpAddr 24,

(ulIpAddr 16) 0xff, (ulIpAddr 8) 0xff, ulIpAddr 0xff);

return szIpAddr;

}

答案:函數的局部變量是存放在堆棧中的,此函數返回了堆棧中的地址,函數退出後堆棧中的內容不可用。

3.如下程序用於輸出”Welcome Home”。請指出其中的錯誤:

void Test(void)

{

char pcArray[12];

strcpy(pcArray,”Welcome Home”);

printf(“%s!”, pcArray);

return;

}

答案:數組越界。

4.如下程序用於把”blue”字符串返回,請指出其中的錯誤:

char *GetBLUE(void)

{

char* pcColor ;

char* pcNewColor;

pcColor = “blue”;

pcNewColor = (char*)malloc(strlen(pColor));

if(NULL == pcNewColor)

{

return NULL;

}

strcpy(pcNewColor, pcColor);

return pcNewColor;

}

答案:申請內存空間不足,字符串結尾還有’\0’。

5.下面程序期望輸出str = hello world,請指出其中的錯誤:

char * GetStr(char *p)

{

p = “hello world”;

return p;

}

void main()

{

char *str = NULL;

if(NULL != GetStr(str))

{

printf(“\r\n str = %s”,str);

}

return;

}

答案:無法返回字符串,參數使用錯誤。

c語言編程代碼

兩種方法我寫在一起,可以獨立拆開。

#include stdio.h

void finda1(char a[3][10]);

void finda2(char a[3][10]);

void show(char (*p)[10]);

int main()

{

  char a[3][10]={{“gehajl”},{“788a987a7”},{“ccabbbabbb”}};

  printf(“原數組內容:\n”);

  show(a);

  printf(“\n1、用數組指針的方法(函數finda1):\n”);

  finda1(a);

  printf(“執行後:\n”);

  show(a);

  printf(“\n———————\n”);

  char b[3][10]={{“gehajl”},{“788a987a7”},{“ccabbbabbb”}};

  printf(“原數組內容:\n”);

  show(a);

  printf(“\n2、用指針數組的方法(函數finda2):\n”);

  finda2(b);

  printf(“執行後:\n”);

  show(b);

  return 0;

}

void finda1(char a[3][10])

{

  int i,j;

  char (*p)[10]=a;

  for(i=0;i3;i++)

      for(j=0;j10;j++)

          if(p[i][j]==’a’)

              printf(“發現:第%d行第%d個元素是‘a’,已替換\n”,i+1,j+1),p[i][j]=’1′;

}

void finda2(char a[3][10])

{

  int i,j;

  char *p[3]={a[0][0],a[1][0],a[2][0]};

  for(i=0;i3;i++)

      for(j=0;j10;j++)

          if(p[i][j]==’a’)

              printf(“發現:第%d行第%d個元素是‘a’,已替換\n”,i+1,j+1),p[i][j]=’1′;

}

void show(char (*p)[10])

{

  int i,j;

  for(i=0;i3;i++,printf(“\n”))

      for(j=0;j10;j++)

          printf(“%c “,p[i][j]);

}

計算機二級c語言程序設計有哪些題型?

全國計算機二級C語言程序設計包括40個單選題(每題一分)和三道操作題(60分)。

單選題中1~10題為二級公共基礎知識,單選題的11~40題是C語言的內容。

操作題包括程序填空(18分)、程序改錯(18分)和編程題(24分)各一題。

程序填空是將一個完整的程序,扣掉兩到三處,讓考生將它填寫完整。由於每位考生具體抽到的題目不同,程序填空有2到3個空要填。

程序改錯也是一個完整的程序,其中有2~3處錯誤要求考生將他們改正。

編程題是要求考生編寫一個程序,然後運行出題干要求的結果。題目中主函數main()會完整給出,在主函數中將調用fun()函數,fun函數由考生自己編寫。編程題以運行結果給分,所編寫完成後必須運行,否則沒分。

二級C語言程序設計考試涉及公共基礎知識和C語言兩塊。公共基礎知識內容包括數據結構與算法、程序設計基礎、軟件工程基礎、數據庫設計基礎四部分。考10個單選每個1分。

C語言有基礎知識(C語言概述、常量與變量、數據類型、運算符和表達式),編程三大結構(順序結構、選擇結構、循環結構),數組、函數和指針,其他內容(預處理命令、結構體和共用體、位運算、文件)四大部分內容。重點是第二、三部分。

寫一個簡短的C語言代碼

最簡單的C語言代就是輸出“helloWord”,通常是作為初學編程語言時的第一個程序代碼。具體代碼如下:

#include stdio.h

int main(){

  printf(“Hello, World! \n”);

  return 0;

}

擴展資料:

1、程序的第一行#include stdio.h是預處理器指令,告訴 C 編譯器在實際編譯之前要包含 stdio.h 文件。

2、下一行intmain()是主函數,程序從這裡開始執行。

3、下一行printf(...)是C中另一個可用的函數,會在屏幕上顯示消息"Hello,World!"。

4、下一行return0;終止main()函數,並返回值0。

參考資料來源:百度百科-c語言

C語言程序

經典C源程序100例

【程序1】

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

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

掉不滿足條件的排列。

2.程序源代碼:

main()

{

int i,j,k;

printf(“\n”);

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

for(j=1;j5;j++)

for (k=1;k5;k++)

{

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

printf(“%d,%d,%d\n”,i,j,k);

}

}

==============================================================

【程序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.程序源代碼:

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);

}

==============================================================

【程序3】

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

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

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

2.程序源代碼:

#include “math.h”

main()

{

long int i,x,y,z;

for (i=1;i100000;i++)

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

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

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

printf(“\n%ld\n”,i);

}

}

==============================================================

【程序4】

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

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

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

2.程序源代碼:

main()

{

int day,month,year,sum,leap;

printf(“\nplease input year,month,day\n”);

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;

作者: zhlei81 2005-1-22 11:29 回復此發言

——————————————————————————–

2 經典C源程序100例

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==0year%100!=0))/*判斷是不是閏年*/

leap=1;

else

leap=0;

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

sum++;

printf(“It is the %dth day.”,sum);}

==============================================================

【程序5】

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

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

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

2.程序源代碼:

main()

{

int x,y,z,t;

scanf(“%d%d%d”,x,y,z);

if (xy)

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

if(xz)

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

if(yz)

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

printf(“small to big: %d %d %d\n”,x,y,z);

}

==============================================================

【程序6】

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

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

2.程序源代碼:

#include “stdio.h”

main()

{

printf(“Hello C-world!\n”);

printf(” ****\n”);

printf(” *\n”);

printf(” * \n”);

printf(” ****\n”);

}

==============================================================

【程序7】

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

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

2.程序源代碼:

#include “stdio.h”

main()

{

char a=176,b=219;

printf(“%c%c%c%c%c\n”,b,a,a,a,b);

printf(“%c%c%c%c%c\n”,a,b,a,b,a);

printf(“%c%c%c%c%c\n”,a,a,b,a,a);

printf(“%c%c%c%c%c\n”,a,b,a,b,a);

printf(“%c%c%c%c%c\n”,b,a,a,a,b);}

==============================================================

【程序8】

題目:輸出9*9口訣。

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

2.程序源代碼:

#include “stdio.h”

main()

{

int i,j,result;

printf(“\n”);

for (i=1;i10;i++)

{ for(j=1;j10;j++)

{

result=i*j;

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

}

printf(“\n”);/*每一行後換行*/

}

}

==============================================================

【程序9】

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

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

2.程序源代碼:

#include “stdio.h”

main()

{

int i,j;

for(i=0;i8;i++)

{

for(j=0;j8;j++)

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

printf(“%c%c”,219,219);

else

printf(” “);

printf(“\n”);

}

}

==============================================================

【程序10】

題目:打印樓梯,同時在樓梯上方打印兩個笑臉。

1.程序分析:用i控制行,j來控制列,j根據i的變化來控制輸出黑方格的個數。

2.程序源代碼:

#include “stdio.h”

main()

{

int i,j;

printf(“\1\1\n”);/*輸出兩個笑臉*/

for(i=1;i11;i++)

{

for(j=1;j=i;j++)

printf(“%c%c”,219,219);

printf(“\n”);

}

}

作者: zhlei81 2005-1-22 11:29 回復此發言

——————————————————————————–

3 回復:經典C源程序100例

【程序11】

題目:古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月

後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?

1.程序分析: 兔子的規律為數列1,1,2,3,5,8,13,21….

2.程序源代碼:

main()

{

long f1,f2;

int i;

f1=f2=1;

for(i=1;i=20;i++)

{ printf(“%12ld %12ld”,f1,f2);

if(i%2==0) printf(“\n”);/*控制輸出,每行四個*/

f1=f1+f2; /*前兩個月加起來賦值給第三個月*/

f2=f1+f2; /*前兩個月加起來賦值給第三個月*/

}

}

==============================================================

【程序12】

題目:判斷101-200之間有多少個素數,並輸出所有素數。

1.程序分析:判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除,

則表明此數不是素數,反之是素數。

2.程序源代碼:

#include “math.h”

main()

{

int m,i,k,h=0,leap=1;

printf(“\n”);

for(m=101;m=200;m++)

{ k=sqrt(m+1);

for(i=2;i=k;i++)

if(m%i==0)

{leap=0;break;}

if(leap) {printf(“%-4d”,m);h++;

if(h%10==0)

printf(“\n”);

}

leap=1;

}

printf(“\nThe total is %d”,h);

}

==============================================================

【程序13】

題目:打印出所有的“水仙花數”,所謂“水仙花數”是指一個三位數,其各位數字立方和等於該數

本身。例如:153是一個“水仙花數”,因為153=1的三次方+5的三次方+3的三次方。

1.程序分析:利用for循環控制100-999個數,每個數分解出個位,十位,百位。

2.程序源代碼:

main()

{

int i,j,k,n;

printf(“‘water flower’number is:”);

for(n=100;n1000;n++)

{

i=n/100;/*分解出百位*/

j=n/10%10;/*分解出十位*/

k=n%10;/*分解出個位*/

if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)

{

printf(“%-5d”,n);

}

}

printf(“\n”);

}

==============================================================

【程序14】

題目:將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5。

程序分析:對n進行分解質因數,應先找到一個最小的質數k,然後按下述步驟完成:

(1)如果這個質數恰等於n,則說明分解質因數的過程已經結束,打印出即可。

(2)如果nk,但n能被k整除,則應打印出k的值,並用n除以k的商,作為新的正整數你n,

重複執行第一步。

(3)如果n不能被k整除,則用k+1作為k的值,重複執行第一步。

2.程序源代碼:

/* zheng int is divided yinshu*/

main()

{

int n,i;

printf(“\nplease input a number:\n”);

scanf(“%d”,n);

printf(“%d=”,n);

for(i=2;i=n;i++)

{

while(n!=i)

{

if(n%i==0)

{ printf(“%d*”,i);

n=n/i;

}

else

break;

}

}

printf(“%d”,n);}

==============================================================

【程序15】

題目:利用條件運算符的嵌套來完成此題:學習成績=90分的同學用A表示,60-89分之間的用B表示,

60分以下的用C表示。

1.程序分析:(ab)?a:b這是條件運算符的基本例子。

2.程序源代碼:

main()

{

int score;

char grade;

printf(“please input a score\n”);

scanf(“%d”,score);

grade=score=90?’A’:(score=60?’B’:’C’);

printf(“%d belongs to %c”,score,grade);

}

==============================================================

【程序16】

題目:輸入兩個正整數m和n,求其最大公約數和最小公倍數。

作者: zhlei81 2005-1-22 11:30 回復此發言

——————————————————————————–

4 回復:經典C源程序100例

1.程序分析:利用輾除法。

2.程序源代碼:

main()

{

int a,b,num1,num2,temp;

printf(“please input two numbers:\n”);

scanf(“%d,%d”,num1,num2);

if(num1 { temp=num1;

num1=num2;

num2=temp;

}

a=num1;b=num2;

while(b!=0)/*利用輾除法,直到b為0為止*/

{

temp=a%b;

a=b;

b=temp;

}

printf(“gongyueshu:%d\n”,a);

printf(“gongbeishu:%d\n”,num1*num2/a);

}

==============================================================

【程序17】

題目:輸入一行字符,分別統計出其中英文字母、空格、數字和其它字符的個數。

1.程序分析:利用while語句,條件為輸入的字符不為’\n’.

2.程序源代碼:

#include “stdio.h”

main()

{char c;

int letters=0,space=0,digit=0,others=0;

printf(“please input some characters\n”);

while((c=getchar())!=’\n’)

{

if(c=’a’c=’z’||c=’A’c=’Z’)

letters++;

else if(c==’ ‘)

space++;

else if(c=’0’c=’9′)

digit++;

else

others++;

}

printf(“all in all:char=%d space=%d digit=%d others=%d\n”,letters,

space,digit,others);

}

==============================================================

【程序18】

題目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一個數字。例如2+22+222+2222+22222(此時

共有5個數相加),幾個數相加有鍵盤控制。

1.程序分析:關鍵是計算出每一項的值。

2.程序源代碼:

main()

{

int a,n,count=1;

long int sn=0,tn=0;

printf(“please input a and n\n”);

scanf(“%d,%d”,a,n);

printf(“a=%d,n=%d\n”,a,n);

while(count=n)

{

tn=tn+a;

sn=sn+tn;

a=a*10;

++count;

}

printf(“a+aa+…=%ld\n”,sn);

}

==============================================================

【程序19】

題目:一個數如果恰好等於它的因子之和,這個數就稱為“完數”。例如6=1+2+3.編程

找出1000以內的所有完數。

1. 程序分析:請參照程序–上頁程序14.

2.程序源代碼:

main()

{

static int k[10];

int i,j,n,s;

for(j=2;j1000;j++)

{

n=-1;

s=j;

for(i=1;i {

if((j%i)==0)

{ n++;

s=s-i;

k[n]=i;

}

}

if(s==0)

{

printf(“%d is a wanshu”,j);

for(i=0;i printf(“%d,”,k[i]);

printf(“%d\n”,k[n]);

}

}

}

==============================================================

【程序20】

題目:一球從100米高度自由落下,每次落地後反跳回原高度的一半;再落下,求它在

第10次落地時,共經過多少米?第10次反彈多高?

1.程序分析:見下面注釋

2.程序源代碼:

main()

{

float sn=100.0,hn=sn/2;

int n;

for(n=2;n=10;n++)

{

sn=sn+2*hn;/*第n次落地時共經過的米數*/

hn=hn/2; /*第n次反跳高度*/

}

printf(“the total of road is %f\n”,sn);

printf(“the tenth is %f meter\n”,hn);

}

作者: zhlei81 2005-1-22 11:30 回復此發言

——————————————————————————–

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/206291.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-07 17:50
下一篇 2024-12-07 17:50

相關推薦

  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python計算機程序代碼全面介紹

    本文將從多個方面對Python計算機程序代碼進行詳細介紹,包括基礎語法、數據類型、控制語句、函數、模塊及面向對象編程等。 一、基礎語法 Python是一種解釋型、面向對象、動態數據…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • Python語言實現人名最多數統計

    本文將從幾個方面詳細介紹Python語言實現人名最多數統計的方法和應用。 一、Python實現人名最多數統計的基礎 1、首先,我們需要了解Python語言的一些基礎知識,如列表、字…

    編程 2025-04-28
  • Python作為中心語言,在編程中取代C語言的優勢和挑戰

    Python一直以其簡單易懂的語法和高效的編碼環境而著名。然而,它最近的發展趨勢表明Python的使用範圍已經從腳本語言擴展到了從Web應用到機器學習等廣泛的開發領域。與此同時,C…

    編程 2025-04-28

發表回復

登錄後才能評論