❶ c語言數組題
1題:
#include <stdio.h>
main()
{
int a[10]={89,90,84,78,84,67,88,92,79,73};
int i,j=0;
float aver,sum=0;
for(i=0;i<10;i++)
{
sum+=a[i];
}
aver=sum/10;
printf("%4.2f",aver);
for(i=0;i<10;i++)
{
if(a[i]<aver)
j++;
}
printf("di yu pingjun ren shu:%d",j);
getch();
}
2題:
#include <stdio.h>
#include <math.h>
struct stu
{
float yuwen;
float shuxue;
float yingyu;
}stu[10];
main()
{
int i;
float sum1=0,sum2=0,sum3=0;
float ave1,ave2,ave3;
printf("qing shuru chengji:");
for(i=0;i<簡衡10;i++)
{
scanf("%f%f%f",&stu[i].yuwen,&stu[i].shuxue,&stu[i].yingyu);
printf("\n"吵咐裂);
}
for(i=0;i<10;i++)
{
sum1+=stu[i].yuwen;
sum2+=stu[i].shuxue;
sum3+=stu[i].yingyu;
}
ave1=sum1/10;
ave2=sum2/10;
ave3=sum3/升閉10;
printf("yuwen pingjun ; %f\n",ave1);
printf("shuxue pingjun ; %f\n",ave2);
printf("yingyu pingjun ; %f\n",ave3);
getch();
}
3題:
#include <stdio.h>
main()
{
int a[8][8],i,j;
for(i=0;i<8;i++)
{
a[i][i]=1;
a[i][0]=1;
}
for(i=2;i<8;i++)
for(j=1;j<8;j++)
{
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
for(i=0;i<8;i++)
{
for(j=0;j<=i;j++)
printf("%5d",a[i][j]);
printf("\n");
}
getch();
}
❷ 編一個C語言程序實現從一個字元型數組變數中找出一個標志字元0xff並將該標志字元後的二個字元對應的數字相
下面是C語言的一些題及題形(附答案):
一、選擇題((1)-(40)題每題1分,(41)-(50)題每題2分,共60分)
下列各題A) 、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確的選項塗寫在答題卡相應位置上,答在試卷上不得分。
(1) 計算機的存儲器完整的應包括
A) 軟盤、硬碟 B) 磁碟、磁帶、光碟
C) 內存儲器、外存儲器 D) RAM、ROM
(2) 計算機中運算器的作用是
A) 控制數據的輸入/輸出 B) 控制主存與輔存間的數據交換
C) 完成各種算術運算和邏輯運算 D) 協調和指揮整個計算機系統的操作
(3) 軟磁碟處於防寫狀態時,其中洞念記錄的信息
A) 絕對不會丟失
B) 不能被擦除,但能追加新信息
C) 不能通過寫磁碟操作被更新
D) 不能以常規方式被刪除,但可以通過操作系統的格式化功能被擦除
(4) 光碟根據基製造材料和記錄信息的方式不同,一般可分為
A) CD、VCD
B) CD、VCD、DVD、MP3
C) 只讀光碟、可一次性寫入光碟、可擦寫光碟
D) 數據盤、音頻信息盤、視頻信息盤
(5) 在計算機系統中,可執行程序是
A) 源代碼 B) 匯編語言代碼 C) 機器語言代碼 D) ASCII碼
(6) 計算機軟體系統包括
A) 操作系統、網路軟體 B) 系統軟體、應用軟體
C) 客戶端應用軟體、伺服器端系統軟體 D) 操作系統、應用軟體和網路軟體
(7) 目前,一台計算機要連入Internet,必須安裝的硬體是
A) 數據機或網卡 B) 網路操作系統
C) 網路查詢工具 D) WWW瀏覽器
(8) 在多媒體計算機系統中,不能存儲多或如媒體信息的是
A) 光碟 B) 磁碟 C) 磁帶 D) 光纜
(9) 要將當前盤當前目錄下一個文本文件內容顯示在屏幕上,正確的命令形式是
A) TYPE a*.* B) TYPE east.exe
C) TYPE pro.c>PRN D) TYPE zfc.txt
(10) 下列更改文件名的命令中正確的是
A) REN A:file1 C:F1 B) RENAME A: A:file1 C:F1
C) REN A:file1 F1 D) REN A:file1 \SUB\F1
(11) 已知A盤為DOS系統啟動盤,只有A:\DOS下有自動批處理文件,其中內容為:
CD\DOS
MD USER
CD USER
由A盤啟動DOS系統後,A盤的當前目錄是
A) \DOS B) \DOS\USER C) \ D) \USER
(12) MS-DOS是
A) 分時操作系統 B) 分布式操作系統
C) 單用戶、單任務操作系統 D) 單用戶、多任務操作系統
(13) 在Windows操作系統中,不同文檔之間互相復制信息需要藉助於
A) 剪切板 B) 記事本 C) 寫字板 D) 磁碟緩沖器
(14) 在Windows操作系統中
A) 同一時刻可以有多個活動窗口
B) 同一時刻可以有多個應用程序在運行,但只有一個活動窗口
C) 同一時刻只能有一個打開的窗口
D) DOS應用程序窗口與Windows應用程序窗口不能同時打開著
(15) 下列敘述中正確的是
A) 所有DOS應用程序都可以在Windows操作系統中正確運行
B) 所有DOS應用程序都不能在Windows操作系統中正確運行
C) 大部分DOS應用程序可以在Windows操作系統中正確運行
D) 為DOS5.0以上版本操作系統編寫的應用程序可以在Windows操作系統中正確運行
(16) 下列敘述中正確的是
A) C語言編譯時不檢查語法
B) C語言的子程序有過程和函數兩種
C) C語言的函數可以嵌套定義
D) C語言所有函數都是外部函數
(17) 以下所列的C語言常量中,錯誤的是
A) 0xFF B) 1.2e0.5 C) 2L D) '\72'
(18) 下列選項中,合法的C語言關鍵字是
A) VAR B) cher C) integer D) default
(19) 以下變數x.、y、z均為double類型且已正確納團困賦值,不能正確表示數學式子的C語言表達式是
A) x/y*z B) x*(1/(y*z)) C) x/y*1/z D) x/y/z
(20) 若a為int類型,且其值為3,則執行完表達式a+=a-=a*a後,a的值是
A) -3 B) 9 C) -12 D) 6
(21) 設x、y、t均為int型變數,則執行語句:x=y=3;t=++x||++y;後,y的值為
A) 不定值 B) 4 C) 3 D) 1
(22) 若變數已正確說明為float類型,要通過語句scanf("%f %f %f ",&a,&b,&c);給a賦於10.0,b賦予22.0,c賦予33.0,不正確的輸入形式是:
A) 10<回車> B) 10.0,22.0,33.0<回車>
22<回車>
33<回車>
C) 10.0<回車> D) 10 22<回車>
22.0 33.0<回車> 33<回車>
(23) 若執行以下程序時從鍵盤上輸入9,則輸出結果是
A) 11 B) 10 C) 9 D) 8
Main0
{ int n;
scanf("%d",&n);
if(n++<10) printf("%d\n",n);
else printf("%d\n",n--);
}
(24) 若a、b、c1、c2、x、y、均是整型變數,正確的switch語句是
A) swich(a+b); B) switch(a*a+b*b)
{ case 1:y=a+b; break; {case 3:
case 0:y=a-b; break; case 1:y=a+b;break;
} case 3:y=b-a,break;
}
C) switch a D) switch(a-b)
{ case c1 :y=a-b; break {default:y=a*b;break
case c2: x=a*d; break case 3:case 4:x=a+b;break
default:x=a+b; case 10:case 11:y=a-b;break;
} }
(25) 有以下程序段
int k=0
while(k=1)k++;
while 循環執行的次數是
A) 無限次 B) 有語法錯,不能執行
C) 一次也不執行 D) 執行1次
(26) 以下程序執行後sum的值是
A)15 B)14 C) 不確定 D)0
min()
{ int i , sum;
for(i=1;i<6;i++) sum+=i;
printf("%d\n",sum);
}
(27) 有以下程序段
int x=3
do
while (!(--x));
其輸出結果是
A) 1 B) 3 0 C) 1 -2 D) 死循環
(28) 若變數c為char類型,能正確判斷出c為小寫字母的表達式是
A) 'a'<=c<= 'z' B) (c>= 'a')||(c<= 'z')
C) ('a'<=c)and ('z'>=c) D) (c>= 'a')&&(c<= 'z')
(29) 以下所列的各函數首部中,正確的是
A) void play(var :Integer,var b:Integer)
B) void play(int a,b)
C) void play(int a,int b)
D) Sub play(a as integer,b as integer)
(30) 以下程序的輸出結果是
A) 0 B) 29 C) 31 D) 無定值
fun(int x, int y, int z)
main()
{ int a=31;
fun(5,2,a);
printf("%d",a);
}
(31) 下列程序段的輸出結果是
A) 2 1 4 3 B) 1 2 1 2 C) 1 2 3 4 D) 2 1 1 2
void fun(int *x, int *y)
main()
{ int x=1,y=2;
fun(&y,&x);
printf("%d %d",x, y);
}
(32) 下列程序的輸出結果是
A) 非法B)a[4]的地址 C)5 D)3
main()
,*p=a+5;
printf("%d",*--p);
}
(33) 下列程序的運行結果是
A) 6 3 B) 3 6 C) 編譯出錯D) 0 0
void fun(int *a, int *b)
{ int *k;
k=a; a=b; b=k;
}
main()
{ int a=3, b=6, *x=&a, *y=&b;
fun(x,y);
printf("%d %d", a, b);
}
(34) 下面程序的輸出結果是
A) 0 B) 1 C) 10 D) 9
main()
,*p;
p=a;
printf("%d\n",*p+9);
}
(35) 當調用函數時,實參是一個數組名,則向函數傳送的是
A) 數組的長度 B) 數組的首地址
C) 數組每一個元素的地址 D) 數組每個元素中的值
(36) 設有以下說明語句
struct ex
example;
則下面的敘述中不正確的是
A) struct結構體類型的關鍵字 B) example是結構體類型名
C) x,y,z都是結構體成員名 D) struct ex是結構體類型
(37) 以下只有在使用時才為該類型變數分配內存的存儲類說明是
A) auto和static B) auto和register
C) register和static D) extern和register
(38) 若fp是指向某文件的指針,且已讀到文件末尾,則庫函數feof(fp)的返回值是
A) EOF B) -1 C) 非零值 D) NULL
(39) 以下程序的輸出結果是
A) 20 B) 21 C) 22 D)23
main()
{ int i, k, a[10], p[3];
k=5;
for (i=0;i<10;i++) a[i ]=i;
for (i=0;i<3;i++) p[i ]=a[i *(i+1)];
for (i=0;i<3;i++) k+=p[i] *2;
printf("%d\n",k);
}
(40) 以下程序的輸出結果是
A) 1,5,9 B) 1,4,7 C) 3,5,7 D)3,6,9
main()
;
for(i=0;i<3;i++) printf("%d,",x[i][2-i]);
}
(41) 以下程序的輸出結果是
A) 18 B) 19 C) 20 D)21
main()
,, },i,j,s=0;
for(i=1;i<3;i++)
for(j=0;j<=i;j++)s+=a[i][j];
printf("%dn",s);
}
(42) 以下程序的輸出結果是
A) ABCD B) ABCD C) EFG D) EFGH
FGH EFG JK IJKL
KL IJ O
M
main()
,k;
for(k=1;k<3;k++) printf("%s\n",w[k]);
}
(43) 當執行下面的程序時,如果輸入ABC,則輸出結果是
A) ABC6789 B) ABC67 C) 12345ABC6 D) ABC456789
#include "stdio.h"
#include "string.h"
main()
{ char ss[10]="1,2,3,4,5";
gets(ss); strcat(ss, "6789"); printf("%s\n",ss);
}
(44) 假定以下程序經編譯和連接後生成可執行文件PROG.EXE,如果在此可執行文件所在目錄的DOS提示符下鍵入:
PROG ABCDEFGH IJKL<回車>,則輸出結果為
A) ABCDEFG B) IJHL C) ABCDEFGHIJKL D) IJKLABCDEFGH
main( int argc, char *argv[]))
{ while(--argc>0) printf("%s",argv[argc]);
printf("\n");
}
(45) 以下程序的輸出結果是
A) 1 B) 2 C) 3 D) 4
long fun( int n)
{ long s;
if(n= =1 || n= =2) s=2;
else s=n-fun(n-1);
return s;
}
main()
(46) 以下程序的輸出結果是
A) 16 B) 2 C) 9 D) 1
#define SQR(X) X*X
main()
{ int a=16, k=2, m=1;
a/=SQR(k+m)/SQR(k+m);
printf("d\n",a);
}
(47) 若定義了以下函數:
void f(......)
{......
*p=(double *)malloc( 10*sizeof( double));
......
}
p是該函數的形參,要求通過p把動態分配存儲單元的地址傳回主調函數,則形參p的正確定義應當是
A) double *p B) float **p C) double **p D) float *p
(48) 以下程序的輸出是
A) 10 B) 11 C) 51 D) 60
struct st
*p;
int dt[4]=;
struct st aa[4]=;
main()
{ p=aa;
printf("%d\n",++(p->x));
}
(49) 假定建立了以下鏈表結構,指針p、q分別指向如圖所示的結點,則以下可以將q所指結點從鏈表中刪除並釋放該結點的語句組是
A) free(q); p->next=q->next;
B) (*p).next=(*q).next; free(q);
C) q=(*q).next; (*p).next=q; free(q);
D) q=q->next; p->next=q; p=p->next; free(p);
(50) 以下程序的輸出結果是
A) 0 B) 1 C) 2 D) 3
main()
{ int x=0.5; char z='a';
printf("%d\n", (x&1)&&(z<'z') ); }
二) 填空題(每空2分,共40分)
請將每一個空的正確答案寫在答題卡至序號的橫線上,答在試卷上不得分。
(1) 計算機機領域中,通常用英文單詞「Byte"表示。
(2) 在DOS環境下,自動批處理的文件名為。
(3) 要將當前盤當前目錄下所有擴展名為.TXT的文件內容在列印機上列印輸出,應使用的單條DOS內部命令為。
(4) 在Windows環境下,可以利用單擊、雙擊、拖動這三種滑鼠操作之一的操作實現窗口的移動。
(5) 在Windows環境下,可以將窗口最小化為。
(6) 以下程序的輸出結果是
main()
{ int a=1, b=2;
a=a+b; b=a-b; a=a-b;
printf("%d,%d\n", a, b );
}
(7) 下列程序的輸出結果是16.00,請填空。。
main()
{ int a=9, b=2;
float x= , y=1.1,z;
z=a/2+b*x/y+1/2;
printf("%5.2f\n", z );
}
(8) 用以下語句調用庫函數malloc,使字元指針st指向具有11個位元組的動態存儲空間,請填空。
st=(char*) ;
(9) 下列程序段的輸出結果是。
main()
{ char b[]="Hello,you";
b[5]=0;
printf("%s \n", b );
}
(10) 下列程序段的輸出結果是。
int n='c';
switch(n++)
{ default: printf("error");break;
case 'a':case 'A':case 'b':case 'B':printf("good");break;
case 'c':case 'C':printf("pass");
case 'd':case 'D':printf("warn");
}
(11) 以下程序通過函數指針p調用函數fun,請在填空欄內,寫出定義變數p的語句。
void fun(int *x,int *y)
main()
{ int a=10,b=20;
; /定義變p */
p=fun; p(&a,&b);
......
}
(12) 下列程序的輸出結果是。
void fun(int *n)
{ while( (*n)--);
printf("%d",++(*n));
}
main()
{ int a=100;
fun(&a);
}
(13) 以下程序的輸出結果是。
main()
, *p=arr;
p++;
printf("%d\n",*(p+3));
}
(14) 以下程序用來輸出結構體變數ex所佔存儲單元的位元組數,請填空。
struct st
;
main()
{ struct st ex;
printf("ex size: %d\n",sizeof( ));
}
(15) 下面程序把從終端讀入的文本(用@作為文本結束標志)輸出到一個名為bi.dat的新文件中。請填空。
#include "stdio.h"
FILE *fp;
{ char ch;
if( (fp=fopen ( ) )= = NULL)exit(0);
while( (ch=getchar( )) !='@') fputc (ch,fp);
fclose(fp);
}
(16) 若變數n中的值為24,則prnt函數共輸出行,最後一行有個數。
void prnt(int n, int aa[ ])
{ int i;
for(i=1; i<=n;i++)
{ printf("%6d", aa[i]);
if( !(i%5) ) printf("\n");
}
printf("\n");
}
(17) 以下程序中,主函數調用了LineMax函數,實現在N行M列的二維數組中,找出每一行上的最大值。請填空。
#define N 3
#define M 4
void LineMax(int x[N][M])
{ int i,j,p;
for(i=0; i
{ p=0;
for(j=1; j
if(x[i][p]
printf("The max value in line %d is %d\n", i, );
}
}
main()
;
}
答案:
一:選擇題
(1)c (2)c (3)c (4)c (5)c (6)b (7)a (8)d
(9)d (10)c (11)c (12)c (13)a (14)b (15)c
(16)d (17)b (18)d (19)a (20)c (21)c (22)b
(23)b (24)d (25)a (26)c (27)c (28)d (29)c
(30)c (31)a (32) (33) (34) (35)b (36)b
(37)b (38)c (39)b (40)c (41)a (42)d (43)a
(44)d (45)a (46)b (47)c (48)c (49)b (50)b
二、填空題
(1)位元組 (2)AUTOEXEC.BAT
(3)COPY *.TXT PTN (4)拖動
(5)圖標或按鈕(6)2.1 (7)6.6
(8)Malloc(11)或malloc(sizeof(char)*11)
(9)Hello (10)passwarm
(11)void(*p)()或void(*p)(int*,int*)(12)0
(13)10 (14)struct st 或ex
(15)"bi.dat","w"或"bi,dat","wt"或"bi.dat","w+t"
(16)5 (17)4 (18)p=j (19)x[i][p] (20)LineMax(x)
❸ C語言 函數renturn a 語句,但是a在main函數里沒變化
你這程序寫的語法有問題啊,main函數中調用Register (a)和Menu(i)都有參數,外部定義Register ()和Menu()時又沒有參數,而且在外部定義Register ()和Menu()你還有一個返回值,主函數中都沒有接收這個值的變數
外部調用函數的語寬拆法應該是這樣的:
int pp(int a)//a是形參
{
int c;
……
return(c);
}
……
main()
{ int i,j;
…塌拆…
j= pp(i)//i是實參,j用來接收返回的c
}
還有一種是這樣的:
int aaa; //定義一個全局變團巧棗量
int pp()
{
aaa=100;
}
……
main()
{ int i,j;
aaa=2;
pp();
printf("%d",aaa);//此時aaa=100
}
❹ 用C語言將文本文件中的數據(一個個結構體類型的數據)讀到鏈表中去,代碼如何寫
這是我最開始學習鏈表的時候寫的一個很小的程序,好像不是很完善,但是大致應該沒有問題,你可以參照的看看。太晚了,實在是不想寫了。
#include<stdio.h>
#include<io.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
#defineMAX200
structstudent
{
charno[10];//學號
charname[50];//姓名
floatscore[3];//分數
floatmath;
floateng;
floatphy;
};
structdata
{
intcount;//當前學生數組中學生的個數
structstudentstu[MAX];//學生數組
}dd;
//顯示主菜單
voidmenu()
{
system("cls");//清屏
printf(" ");
printf(" ******************************* ");
printf(" ");
printf(" 頃慶喚學生成績管理系統 ");
printf(" ");
printf(" [1]查看所有學生信息 ");
printf(" [2]輸入學生記錄 ");
printf(" [3]刪除學生記錄 ");
printf(" [4]修改學生記錄 ");
printf(" 差搏[5]查詢學生成績(學號) ");
printf(" [6]查詢成學生績(姓名) ");
printf(" [7]查看成績排序(學號) ");
printf(" [0]退出雀凱 ");
printf(" ");
}
//等待用戶按回車後回到主菜單
voidto_menu()
{
charc1,c2;
printf(" 按回車鍵返回主菜單...");
scanf("%c%c",&c1,&c2);//第一個字元吸收上次的確認回車鍵
menu();
}
//統計信息
voidren()
{
intA=0,B=0,C=0,D=0,E=0,s;
inti;
for(i=0;i<dd.count;i++)
{
s=(int)(dd.stu[i].math/10);
switch(s)
{
case10:
case9:
A++;
break;
case8:
B++;
break;
case7:
C++;
break;
case6:
D++;
break;
default:
E++;
break;
}
}
printf("總人數:%d ",dd.count);
printf("獲得「優秀」的人數:%d ",A);
printf("獲得「良」的人數:%d ",B);
printf("獲得「中」的人數:%d ",C);
printf("獲得「及格」的人數:%d ",D);
printf("不及格的人數:%d ",E);
}
//查看所有學生信息
voidview_data()
{
inti;
printf("學號 姓名 數學 英語 物理");
printf(" ------------------------------------------------------------------- ");
for(i=0;i<dd.count;i++)
printf("%s %s %-7.1f %-7.1f %-7.1f ",dd.stu[i].no,dd.stu[i].name,dd.stu[i].math,dd.stu[i].eng,dd.stu[i].phy);
printf(" ------------------------------------------------------------------- ");
ren();
}
//將數據從結構體數組保存到文件中
voidsave_data()
{
FILE*fp;//文件指針
inti,k;
k=dd.count; //其實k沒有什麼實際的意義,直接在fwrite里使用&dd.count就可以了。
fp=fopen("D:\data.txt","w");//文件存儲位置:當前文件夾
fwrite(&k,sizeof(int),1,fp);
for(i=0;i<dd.count;i++)
fwrite(&dd.stu[i],sizeof(structstudent),1,fp);
fclose(fp);
}
//輸入學生記錄
voidadd_data()
{
intb;
intk=dd.count;
while(k<MAX)
{
printf("請輸入學生學號:");scanf("%s",dd.stu[k].no);
printf("請輸入學生姓名:");scanf("%s",dd.stu[k].name);
printf("請輸入數學成績:");scanf("%f",&dd.stu[k].math);
printf("請輸入英語成績:");scanf("%f",&dd.stu[k].eng);
printf("請輸入物理成績:");scanf("%f",&dd.stu[k].phy);
dd.count++; //需要提前置0,在主函數中。
k=dd.count;
printf(" 繼續添加學生信息[1-yes0-no]:");
scanf("%d",&b);
if(b==0)break;
}
save_data();
}
//將數據從文件讀到結構體數組中
voidread_data()
{
FILE*fp;
inti,k;
k=0;
if((fp=fopen("D:\data.txt","r"))==NULL)//如果文件不存在
{
dd.count=0;
}
else
{
fread(&k,sizeof(int),1,fp);
dd.count=k;
for(i=0;i<k;i++)
{
fread(&dd.stu[i],sizeof(structstudent),1,fp);
}
fclose(fp);
}
}
//刪除學生記錄
voiddelete_data()
{
inti,k;
charno[10];
printf(" 請輸入要刪除學生的學號:");
scanf("%s",no);
k=-1;
for(i=0;i<dd.count;i++)
{
if(strcmp(dd.stu[i].no,no)==0)
{
k=i;
break;
}
}
if(k==-1)
{
printf(" 沒有找到該學生(學號-%s)!",no);
}
else
{
//你沒有寫刪除的操作啊
for(i=k;i<dd.count-1;i++) //將後面的數據前移一位
dd.stu[i]=dd.stu[i+1];
memset(&dd.stu[dd.count-1],0,sizeof(structstudent)); //將dd.stu[dd.count-1]數據置0
dd.count--;
save_data();
printf(" 刪除學生(學號-%s)記錄成功!",no);
}
}
//修改學生記錄
voidedit_data()
{
inti,k;
charno[10],name[50];
printf(" 請輸入要修改學生的學號:");
scanf("%s",no);
k=-1;
for(i=0;i<dd.count;i++)
{
if(strcmp(dd.stu[i].no,no)==0)
{
k=i;
break;
}
}
if(k==-1)
{
printf(" 沒有找到該學生(學號-%s)!",no);
}
else
{
printf(" 請輸入學生數據:");
printf(" 姓名");
printf(" -------------------------------------------------------------------- ");
scanf("%s",name);
strcpy(dd.stu[k].name,name);
save_data();
printf(" 修改學生記錄(學號-%s)成功!",no);
}
}
//查詢學生成績(學號)
voidquery_data_no()
{
inti,k;
charno[10];
printf(" 請輸入要查詢學生的學號:");
scanf("%s",no);
k=-1;
for(i=0;i<dd.count;i++)
{
if(strcmp(dd.stu[i].no,no)==0)
{
printf(" 學號 姓名 數學 英語 物理");
printf(" ----------------------------------------------------------------- ");
k=i;
printf("%s %s %-7.1f %-7.1f %-7.1f ",dd.stu[i].no,dd.stu[i].name,dd.stu[i].math,dd.stu[i].eng,dd.stu[i].phy);
break; // 學號應該是唯一的,找到了一個就代表以後的沒有了。
}
}
if(k==-1)
{
printf(" 沒有找到該學生(學號-%s)!",no);
}
}
//查詢學生成績(姓名)
voidquery_data_name()
{
inti,k;
charname[10];
printf(" 請輸入要查詢學生的姓名:");
scanf("%s",name);
k=-1;
for(i=0;i<dd.count;i++)
{
if(strcmp(dd.stu[i].name,name)==0)
{
printf(" 學號 姓名 數學 英語 物理");
printf(" ----------------------------------------------------------------- ");
k=i;
printf("%s %s %-7.1f %-7.1f %-7.1f ",dd.stu[i].no,dd.stu[i].name,dd.stu[i].math,dd.stu[i].eng,dd.stu[i].phy);
break;
}
}
if(k==-1)
{
printf(" 沒有找到該學生(姓名-%s)!",name);
}
}
//排序(學號)
voidsort_data_no(structdataBuff)
{
inti;
intj;
intk;
inth;
structstudenttemp;
FILE*fp;
if((fp=fopen("D:\data.txt","w+"))==NULL)
{
printf("cannotopenfile! ");
exit(0);
}
printf("請輸入要查詢的科目:1-數學,2-英語,3-物理:");
scanf("%d",&k);
switch(k)
{
case1:
for(i=0;i<Buff.count-1;i++)
for(j=i+1;j<Buff.count;j++)
if(Buff.stu[i].math>Buff.stu[j].math)
{
temp=Buff.stu[i];
Buff.stu[i]=Buff.stu[j];
Buff.stu[j]=temp;
}
printf("名次 學號 姓名 數學 ");
for(i=0;i<Buff.count;i++)
printf("%d %s %s %-7.1f ",i+1,Buff.stu[i].no,Buff.stu[i].name,Buff.stu[i].math);
break;
case2:
for(i=0;i<Buff.count-1;i++)
for(j=i+1;j<Buff.count;j++)
if(Buff.stu[i].eng>Buff.stu[j].eng)
{
temp=Buff.stu[i];
Buff.stu[i]=Buff.stu[j];
Buff.stu[j]=temp;
}
printf("名次 學號 姓名 英語 ");
for(i=0;i<Buff.count;i++)
printf("%d %s %s %-7.1f ",i+1,Buff.stu[i].no,Buff.stu[i].name,Buff.stu[i].eng);
break;
case3:
for(i=0;i<Buff.count-1;i++)
for(j=i+1;j<Buff.count;j++)
if(Buff.stu[i].phy>Buff.stu[j].phy)
{
temp=Buff.stu[i];
Buff.stu[i]=Buff.stu[j];
Buff.stu[j]=temp;
}
printf("名次 學號 姓名 物理 ");
for(i=0;i<Buff.count;i++)
printf("%d %s %s %-7.1f ",i+1,Buff.stu[i].no,Buff.stu[i].name,Buff.stu[i].phy);
break;
default:
printf("輸入錯誤!");
exit(0);
}
printf("請按任意鍵繼續....");
getch();
fclose(fp);
}
//主函數
voidmain()
{
intfun;
dd.count=0;
read_data();
menu();
while(1)
{
printf("請輸入功能號[0-7]:");//這里不需要什麼&fun,
scanf("%d",&fun);
switch(fun)
{
case1:view_data();break;//查看所有學生信息
case2:add_data();break;//輸入學生記錄
case3:delete_data();break;//刪除學生記錄
case4:edit_data();break;//修改學生記錄
case5:query_data_no();break;//查詢學生成績(學號)
case6:query_data_name();break;//查詢成學生績(姓名)
case7:sort_data_no(dd);break;//查看成績排序(學號)//直接將結構體dd發送過去就可以了
case0:break;//退出
}
if(fun==0)break;
to_menu();
}
return;
}
❺ 51單片機 C語言 串口數組賦值問題
貼上來的程序部分,修改如下:
#include<reg52.h>
#include<stdio.h> //列印到串口函數雀孫
#define uchar unsigned char
#define uint unsigned int
uchar date_zi[4][11]; //存放接收到的數據
uint i_index=0; //接收到的字元個數
uint i=0; //i字元用於循環
unsigned int xia = 0; //用於保存到頃鬧鏈數據的下標
void fh_zi(uchar a) //返彎滲回字元到串口
{
ES=0;
SBUF=a;
while(!TI);
TI=0;
ES=1;
}
void init()
{
TMOD=0x20;
TH1=0xfd;
TL1=0Xfd;
//TH0=(65536-45872)/256;
//TL0=(65536-45872)%256;
TR1=1;
SM0=0;
SM1=1;
REN=1;
EA=1;
ES=1;
}
void main()
{
i_index=0;
xia=2;
init();
while(1);
}
void ser() interrupt 4 //串口
{
if(RI == 1)
{
RI=0;
date_zi[xia][i_index] = SBUF;
i_index++;
if(i_index>10) //接受完10個字元後顯示數組所有內容
{
i_index=0;
for(i=0;i<11;i++) //顯示數組中所有內容
fh_zi(date_zi[0][i]);
for(i=0;i<11;i++)
fh_zi(date_zi[1][i]);
for(i=0;i<11;i++)
fh_zi(date_zi[2][i]);
for(i=0;i<11;i++)
fh_zi(date_zi[3][i]);
}
}
}
❻ C語言定義一個函數將一個整數(做為參數)變成字元串,每個字元之間加一個空格,並將字元串輸出
#include"stdio.h"
void main()
{
int a;
char ch[10]={0};
scanf("%d",&a);
int c=a,i=0;
while(c)
{
i++;
c=c/10;
}
while(a)
{
i--;
ch[i]=a%10+'0';
a/=10;
}
for(i=0;ch[i]!='\0';i++)
printf("%c ",ch[i]);
}
不知道這樣可以不。
補充:
#include<stdio.h>
int aq(int c,int a)//這個函數也有很大的問題。
{
int i;
char ch[10];
c=a;i=0;
while(c)
{
i++;
c=c/10;
return c;
}
while(a)
{
i--;
ch[i]=a%10+'0';
a/=10;
return a;
}
}
main()
{
int a,i;
char ch[10]={0};
scanf("%d",&a);
for(i=0;ch[10]!='\0';i++) //這句毫無意義,或者你寫錯了,並且後面也缺少了大括伍鍵號。
ch[i]=aq(a); /圓橘哪/函數定義時有兩個參數,這里橘碼調用卻只有一個,不錯才怪了
printf("%c",ch[i]);
}
勸你還是要不重新做,要不看懂答案後再自己做,反正你寫的實在問題太大
❼ C語言中怎麼給一個結構體用scanf進行賦值
很簡單的
在這個例子裡面我建議你不用scanf改虛塌用getsgets(ren[0].gonghao)就可以了
因為差岩圓都棗薯是字元型數組么、、
❽ 用單片機C語言怎樣啟動內部上拉電阻寄存器REN
不同單片機有不同方法;
51不用內部上拉,因為51埠沒有方向,你如果給1,就算拉起來了,但外部有低電平是,還是很容易就拉下去
avr好隱渣擾久沒用,應該是把埠置為輸入,數據寄存器高
PIC只有在給定灶旦的埠才可以上拉,此時OPTION_REG寄存器中有一位上拉使能的,控制這梁租位就可以了
❾ C語言編程:輸入50個同學的成績,計算平均值並輸出大於平均值的學生序號和成績,錯誤在哪
你好!!
程序改好了,運行的結果
#include<stdio.h>
intmain()
{
intrenshu=50.0;//這里設定人數,為了方便,我調試設的是3
inti;
doublea[100],b[100],s,t,avera,averb;//ab定義成數組
for(i=1,s=0,t=0;i<=renshu;i++)
{
scanf("%lf%lf",&a[i],&b[i]);//%lf之間加上空格
s=s+a[i];
t=t+b[i];
}
avera=s/renshu;
averb=t/renshu;
printf("科目1平均成績為:%lf
",avera);
printf("科目1平均成績為:%lf
",averb);
for(i=1;i<=renshu;i++)
{
if(a[i]>avera)
printf("學生%d的科目1成績為%lf
",i,a[i]);
}
for(i=1;i<=renshu;i++)
{
if(b[i]>averb)
printf("學生%d的科目2成績為%lf
",i,b[i]);
}
return0;
}
❿ c語言中renshu:是什麼意思
這是定義耐卜一個標簽,以後可以用goto語句旦畝爛跳到這個標簽。
比模漏如:
int n=0;
renshu:
n++;
if(n<10)
goto renshu;