大一c语言程序设计题库,C语言程序设计编程题

1 , C语言程序设计编程题int a[10],int total=0;int pingjun=0;for(int i=0;i<10;i++)scanf("%d,$a[i]);total=a[i]+total;printf("%d",total);}printf("\n");pingjun=total/10;printf("%d",pingjun);#include <iostream.h>void main(){ float sum=0,average=0; float array[10] = ; cout<<"请输入10个数:"<<endl; for (int i=0;i<10;i++) { cout<<"第"<<i+1<<"个数:"; cin>>array[i]; sum+=array[i]; } cout<<"总合为:"<<sum<<endl; cout<<"平均数为:"<<sum/10<<endl;}#include <stdio.h>main()int num[];int numSum;int numAvg;//这里随便放到数组10个数for(int i=1;i<=11;i++)num[i-1]=i;}//求和,平均值for(int i=0;i<num.Length;i++)numSum+=num[i];}printf("和为:printf(("平均值为:}【大一c语言程序设计题库,C语言程序设计编程题】
2 , 大一C语言编程题车票根据题意两两站点连线生成,金额和数量分别用随机数 。数据存储:站点,车票,用户分别为3个结构体,用于对应数据库 。购买流程:检查输入数值有效性->检查车票库存->购买成功同步修改用户购买流水及车票库存 。(这里题目需求不明确,没有指明用户购买方式),我的代码允许一个用户同时购买多种票,每种票可分批购买多张 。购买流水记录自动增加和更新 。退票流程:检查输入和用户购买记录,同步更新用户及车票信息 。删除流程:选择删除没有被用户购买的票(函数检查所有用户,虽然本题只要一个用户 , 实际传参用户数组首地址) 。PS: 这个题目涉及到增删改,用链表来写更好 , 但考虑你学习范围,没有使用链表而是动态数组 , 动态数组删除,考虑内存占用,不仅要需循环移位还要释放多余地址 。另外整体程序,异常的处理我只是单纯返回0或者1或者-1区分基本的成功与失败 。你如想对个别异常进行特殊处理 , 自行修改返回值,接收判断 。下面是代码:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <time.h>#include <windows.h>#include <conio.h>#define MS 5//最大站点数typedef struct stationchar sid[10];char sName[20];}STN;typedef struct ticketint tid;//票编号STN *ssP;//起始站STN *tsP;//终点站int value;//票价int number;//数量}TKT;typedef struct userInfo//用户char uid[20];//身份证号int cnt;//购买的票种类数量int *btids;//购买的所有票id数组int *btNum;//购买的所有票数量数组}UIFO;int init(STN stns[MS],TKT **tkts);//初始化车站、票数据int disAllTickets(TKT *tkts);int buyTicket(UIFO *uifo,TKT *tkts);//异常返回0int reTicket(UIFO *uifo,TKT *tkts);//异常返回0int showMenu(UIFO *uifo,TKT *tkts);int delIntByIndex(int *nums,int len,int index);//通过下标index删除动态整型数组nums对应元素,并释放多余地址,返回删除后的数组长度,异常返回-1int delTkts(UIFO *uifos,int len,TKT *tkts);//删除指定票(检查用户组,只要有一个用户购买,无法删除)int cnt;//票种类数量int main()STN stns[MS];TKT *tkts=NULL;UIFO uifo=srand(time(NULL));cnt=init(stns,&tkts);printf("共生成%d组票(每组往返两种票 , 共%d种票)\n\n",cnt/2,cnt);printf("按任意键继续 。。。。\n"),getch();system("cls");showMenu(&uifo,tkts);return 0;}int showMenu(UIFO *uifo,TKT *tkts)int n=5;printf("(1) Buy ticket\n");printf("(2) Refund ticket\n");printf("(3) Remove ticket\n");printf("(4) Display all tickets\n");printf("(0) Exit\n");while(n<0 || n>4)scanf("%d",&n);switch(n)case 0: return 0;case 1: if(!buyTicket(uifo,tkts)) return 0;break;case 2: if(!reTicket(uifo,tkts)) return 0;break;case 3: if(!delTkts(uifo,1,tkts)) return 0;break;//这里删除功能 , 用户多名,要传数组首地址,由于演示只有一个用户(len=对应用户数),所以只传该用户地址(len=1)case 4: disAllTickets(tkts);break;}showMenu(uifo,tkts);return 1;}int disAllTickets(TKT *tkts)int i;for(i=0;i<cnt;i++)printf("编号:%2d 路程:%s-%s 票价:%3d 剩余票数:%d\n",tkts[i].tid,tkts[i].ssP->sName,tkts[i].tsP->sName,tkts[i].value,tkts[i].number);printf("按任意键继续 。。。。\n"),getch();system("cls");return 1;}int delIntByIndex(int *nums,int len,int index)int i,*temp=NULL;if(index>len-1) return -1;for(i=index;i<len-1;i++)nums[i]=nums[i+1];len--;if(len)temp=(int *)realloc(nums,sizeof(int)*len);if(!temp) return -1;nums=temp;}elsefree(nums);return len;}int reTicket(UIFO *uifo,TKT *tkts)int i,j,tid,n,index,len,flag=0;printf("当前用户购买记录:\n");for(i=0;i<uifo->cnt;i++)for(j=0;j<cnt;j++)if(tkts[j].tid==uifo->btids[i]) index=j;printf("--车票编号:%d,起末站:%s-%s,购买票数:%d\n",uifo->btids[i],tkts[index].ssP->sName,tkts[index].tsP->sName,uifo->btNum[i]);}printf("请输入要退票的车票id及票数:"),scanf("%d%d",&tid,&n);for(i=0;i<uifo->cnt;i++)if(uifo->btids[i]==tid && uifo->btNum[i]>=n)for(j=0;j<cnt;j++)if(tkts[j].tid==uifo->btids[i]) tkts[j].number+=n;//同步修改对应车票剩余票数uifo->btNum[i]-=n;//用户购买记录修改if(uifo->btNum[i]==0)//某种车票全部退完,删除该条记录len=delIntByIndex(uifo->btNum,uifo->cnt,i);if(len==-1) return 0;len=delIntByIndex(uifo->btids,uifo->cnt,i);if(len==-1) return 0;uifo->cnt=len;}flag=1;break;}if(flag)printf("退票成功!\n");elseprintf("无此购买记录或输入数量不符合\n");printf("按任意键继续 。。。。\n"),getch();system("cls");return 1;}int buyTicket(UIFO *uifo,TKT *tkts)char spn[20],tpn[20];int i,n=-1,index=-1,*temp=NULL;for(i=0;i<cnt;i++)printf("编号:%2d 路程:%s-%s 票价:%3d 剩余票数:%d\n",tkts[i].tid,tkts[i].ssP->sName,tkts[i].tsP->sName,tkts[i].value,tkts[i].number);printf("请输入始发站站名和终点站站名:"),scanf("%s%s",spn,tpn);for(i=0;i<cnt;i++)if(strcmp(tkts[i].ssP->sName,spn)==0 && strcmp(tkts[i].tsP->sName,tpn)==0)printf("车票%s-%s 票价:%3d 剩余票数:%d\n",tkts[i].ssP->sName,tkts[i].tsP->sName,tkts[i].value,tkts[i].number);index=i;break;}if(index==-1)printf("购买失败!无此路程的车票\n");elsewhile(n<=0)printf("请输入要购买的数量(大于0):"),scanf("%d",&n);if(tkts[index].number<n)printf("错误:车票数量不足或者输入数值超出范围!请重新输入!\n"),n=-1;}for(i=0;i<uifo->cnt;i++)//检查用户购买记录,重复票累加购买数量,不同票新增记录if(uifo->btids[i]==tkts[index].tid)printf("该票已购买了%d张,现再次购买%d张,累计购买了%d张\n",uifo->btNum[i],n,uifo->btNum[i]+n);uifo->btNum[i]+=n;tkts[index].number-=n;break;}}if(i==uifo->cnt)//未检查到重复记录,新增if(!uifo->btids)uifo->btids=(int *)malloc(sizeof(int));if(!uifo->btids) return 0;uifo->btNum=(int *)malloc(sizeof(int));if(!uifo->btNum) return 0;}elsetemp=(int *)realloc(uifo->btids,sizeof(int)*(uifo->cnt+1));if(!temp) return 0;uifo->btids=temp;temp=(int *)realloc(uifo->btNum,sizeof(int)*(uifo->cnt+1));if(!temp) return 0;uifo->btNum=temp;}uifo->btids[uifo->cnt]=tkts[index].tid;printf("该票购买了%d张\n",(uifo->btNum[uifo->cnt]=n));tkts[index].number-=n;uifo->cnt++;printf("用户购买记录:\n");for(i=0;i<uifo->cnt;i++)printf("--车票编号:%d,购买票数:%d\n",uifo->btids[i],uifo->btNum[i]);}printf("本次成功购买了%s-%s的票%d张!\n",tkts[index].ssP->sName,tkts[index].tsP->sName,n);}printf("按任意键继续 。。。。\n"),getch();system("cls");return 1;}int delTkts(UIFO *uifos,int len,TKT *tkts)//len:所有购买的用户数量int i,j,k,tid,flag=0,index;for(i=0;i<cnt;i++)printf("编号:%2d 路程:%s-%s 票价:%3d 剩余票数:%d\n",tkts[i].tid,tkts[i].ssP->sName,tkts[i].tsP->sName,tkts[i].value,tkts[i].number);printf("请输入要删除的车票编号:"),scanf("%d",&tid);for(i=0;i<cnt;i++)if(tid==tkts[i].tid)index=i;flag=1;for(j=0;j<len;j++)//检查所有用户购买记录for(k=0;k<uifos[j].cnt;k++)if(uifos[j].btids[k]==tid)flag=0;printf("该票已被用户购买,无法删除,需先完成退票!\n");break;}if(!flag)break;}break;}if(!flag) printf(" 删除失败 , 输入数值超出范围或不可删除!\n");elsecnt--;if(cnt==0)free(tkts[index].ssP);free(tkts[index].tsP);free(&tkts[index]);}elsefree(tkts[index].ssP);free(tkts[index].tsP);for(i=index;i<cnt;i++)tkts[i]=tkts[i+1];tkts[cnt].ssP=NULL;tkts[cnt].tsP=NULL;free(&tkts[cnt]);}printf(" 删除成功!\n");}printf("按任意键继续 。。。。\n"),getch();system("cls");return 1;}int init(STN stns[MS],TKT **tkts)TKT *tTemp=NULL;int i,j,n,v,cnt=2;static int id=1;printf("生成站点:\n");for(i=0;i<MS;i++,id++)sprintf(stns[i].sid,"车站%03d",id);sprintf(stns[i].sName,"SN%03d",id);printf("----站点名:%s 。站点ID:%s\n",stns[i].sid,stns[i].sName);}printf("计算所有站点连线,生成车票(票是往返,所以一次生成往返两组票):\n");for(i=0;i<MS;i++)for(j=i+1;j<MS;j++)if(!(*tkts))*tkts=(TKT *)malloc(sizeof(TKT)*2);if(!(*tkts)) return -1;}elsetTemp=(TKT *)realloc((*tkts),sizeof(TKT)*cnt);if(!tTemp) return -1;*tkts=tTemp;}n=rand()%4+2;//每种票随机2~5张(保证总数大于20)v=rand()%201+50;//随机生成票价50~250(*tkts)[cnt-1].tid=cnt;(*tkts)[cnt-1].ssP=&stns[i];(*tkts)[cnt-1].tsP=&stns[j];(*tkts)[cnt-1].value=http://www.lisdn.com/gkrj/shjy/v;(*tkts)[cnt-1].number=n;(*tkts)[cnt-2].tid=cnt-1;(*tkts)[cnt-2].ssP=&stns[j];(*tkts)[cnt-2].tsP=&stns[i];(*tkts)[cnt-2].value=v;(*tkts)[cnt-2].number=n;printf("----%s和%s的之间往返票各生成%d张,票价为%d(随机)\n",stns[i].sName,stns[j].sName,n,v);cnt+=2;}return cnt-2;}//答题不易,如采纳的,请不要无故删除问题 。
3 , c语言程序设计题void zhzh(){int num[][]={****};//你要转置的那个矩阵具体数字int i,j,T[][];//T[][]表示一个新矩阵,用来放转置后的那个矩阵for(i=0;ivoid fun(int num[],int n){ int i,j;for(i=0;i同意“漫天寻你 ”#include #define OUT void MatrixTranspose(int SourceMatrix[][3], OUT int** ppDestMatrix=NULL) { if(NULL == ppDestMatrix) { return; } for (int i=0; i<=2; i++) { for (int j=0; j<=2; j++) { ppDestMatrix[i][j] = SourceMatrix[j][i]; } } } void main() { int** ppDestMatrix = new int*[3]; int i = 0; int j = 0; for (i=0; i<=2; i++) { ppDestMatrix[i] = new int[3]; } int SourceMatrix[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; for (i=0; i<=2; i++) { for (j=0; j<=2; j++) { printf("%d", SourceMatrix[i][j]); } printf("\n"); } MatrixTranspose(SourceMatrix, ppDestMatrix); for (i=0; i<=2; i++) { for(j=0; j<=2; j++) { printf("%d", ppDestMatrix[i][j]); } printf("\n"); } }我觉得不需要中间变量的,思路就像一楼那样就可以了 。。。。。大錢聖君..的答案...要丢数据的...void fun(int num[],int n){ int i,j,tmp;for(i=0;i
4,大一C语言编程题main() { int i=0; int a[10]; int max=0; int all=0; for(;i<10;i++) { scanf("%d",&a[i]); if(0==i) max=a[i]; else { if(max推荐程序如下:#include <stdio.h>int main(){ int x[10]; int i,max=0,sum=0; printf("请输入10个整数(每输入一个数按一次回车键):\n"); for(i = 0; i<10,i++) {scanf("%d",&x[i]);printf("%d",x[i]);// 回显输入的整数sum += x[i];// 求10个数之和if (x[i] > max) max = x[i];// 求出10个数中的最大值 } printf("\n10个数的平均值为:%d",sum/10); // 输出平均值 printf("\n10个数中的最大值为:%d\n",max);// 输出最大的数.}#include <stdio.h>void main(){ int num[10];//10个数 float ave = 0.0f;//平均数 int maxNum = 0;//最大值 int i = 0; printf("请输入10个数:\n"); while(i < 10) {scanf("%d",&num[i]);i ++; } i = 0; maxNum = num[0]; while(i < 10) {ave += num[i];if(maxNum < num[i]){maxNum = num[i];}i ++; } ave = ave / 10.0f; printf("这10个数是:\n"); i = 0; while(i < 10) {printf("%d , ",num[i]);i ++; } printf("\n它们的平均数是 %f,最大值是 %d\n", ave, maxNum);}#include <stdio.h>int main(){printf("请输入10个整数");int num[10] = {NULL};for(int i = 0;i<10,i++){scanf("%d",&num[i]);}for(int j = 0;j<10;j++) {printf("%d",num[j]); //输出10个数int sum += num[j];}printf("\n%d\n",sum/10);//输出平均数int buf = num[0];for(int k = 1;k<10;k++){if(buf<num[k])buf = num[k];}printf("%d\n",buf); //输出最大的数. }

    推荐阅读