大一c语言编程题库100题(c语言基础编程100道)
大一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 station
{
? char sid[10];
? char sName[20];
}STN;
typedef struct ticket
{
? int 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);//异常返回0
int reTicket(UIFO *uifo,TKT *tkts);//异常返回0
int showMenu(UIFO *uifo,TKT *tkts);
int delIntByIndex(int *nums,int len,int index);//通过下标index删除动态整型数组nums对应元素,并释放多余地址,返回删除后的数组长度,异常返回-1
int delTkts(UIFO *uifos,int len,TKT *tkts);//删除指定票(检查用户组,只要有一个用户购买,无法删除)
int cnt;//票种类数量
int main()
{
? STN stns[MS];
? TKT *tkts=NULL;
? UIFO uifo={"321002199902050614",0,NULL,NULL};
? 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(n0 || n4)
? ? ? 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;icnt;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(indexlen-1) return -1;
? for(i=index;ilen-1;i++)
? ? ? nums[i]=nums[i+1];
? len--;
? if(len)
? {
? ? ? temp=(int *)realloc(nums,sizeof(int)*len);
? ? ? if(!temp) return -1;
? ? ? nums=temp;
? }
? else
? ? ? free(nums);
? return len;
}
int reTicket(UIFO *uifo,TKT *tkts)
{
? int i,j,tid,n,index,len,flag=0;
? printf("当前用户购买记录:\n");
? for(i=0;iuifo-cnt;i++)
? {
? ? ? for(j=0;jcnt;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;iuifo-cnt;i++)
? ? ? if(uifo-btids[i]==tid uifo-btNum[i]=n)
? ? ? {
? ? ? ? ? for(j=0;jcnt;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");
? else
? ? ? printf("无此购买记录或输入数量不符合\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;icnt;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;icnt;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");
? else
? {
? ? ? while(n=0)
? ? ? {
? ? ? ? ? printf("请输入要购买的数量(大于0):"),scanf("%d",n);
? ? ? ? ? if(tkts[index].numbern)
? ? ? ? ? ? ? printf("错误:车票数量不足或者输入数值超出范围!请重新输入!\n"),n=-1;
? ? ? }
? ? ? for(i=0;iuifo-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;
? ? ? ? ? }
? ? ? ? ? else
? ? ? ? ? {
? ? ? ? ? ? ? temp=(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;iuifo-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;icnt;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;icnt;i++)
? ? ? if(tid==tkts[i].tid)
? ? ? {
? ? ? ? ? index=i;
? ? ? ? ? flag=1;
? ? ? ? ? for(j=0;jlen;j++)//检查所有用户购买记录
? ? ? ? ? {
? ? ? ? ? ? ? for(k=0;kuifos[j].cnt;k++)
? ? ? ? ? ? ? ? ? if(uifos[j].btids[k]==tid)
? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? flag=0;
? ? ? ? ? ? ? ? ? ? ? printf("该票已被用户购买,无法删除,需先完成退票!\n");
? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? if(!flag)
? ? ? ? ? ? ? ? ? break;
? ? ? ? ? }
? ? ? ? ? break;
? ? ? }
? if(!flag) printf(" 删除失败,输入数值超出范围或不可删除!\n");
? else
? {
? ? ? cnt--;
? ? ? if(cnt==0)
? ? ? {
? ? ? ? ? free(tkts[index].ssP);
? ? ? ? ? free(tkts[index].tsP);
? ? ? ? ? free(tkts[index]);
? ? ? }
? ? ? else
? ? ? {
? ? ? ? ? free(tkts[index].ssP);
? ? ? ? ? free(tkts[index].tsP);
? ? ? ? ? for(i=index;icnt;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;iMS;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;iMS;i++)
? ? ? for(j=i+1;jMS;j++)
? ? ? {
? ? ? ? ? if(!(*tkts))
? ? ? ? ? {
? ? ? ? ? ? ? *tkts=(TKT *)malloc(sizeof(TKT)*2);
? ? ? ? ? ? ? if(!(*tkts)) return -1;
? ? ? ? ? }
? ? ? ? ? else
? ? ? ? ? {
? ? ? ? ? ? ? tTemp=(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=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;
}
//答题不易,如采纳的,请不要无故删除问题。
大一C语言题,求答案!!
53.C 优先级别:!算术运算符关系表达式||赋值表达式
54.B b++表示先引用b的值再进行自加,++b表示先加1再引用b的值。b++具体计算为:先让b=5,再执行b=b+1,此时b=6。题目中括号内表示是逗号表达式,表达式的值为逗号表达式中最后一个表达式的值,所以其值为a+b=2+6=8,。
55.字符在计算机中的运算是以其ASCII值的形式进行运算的,所以字符可以和int数据直接进行运算。A的ASCII值为65,'6'、'3'是用单引号引用起来的,表示字符,可以直接运算。65+6-3=68
56.A while后面的括号内表示当满足某个条件时,如果省略了完整的表达式,如果只是一个E表示E非零时满足条件,E为零时结束循环。!E则表示相反。
57.C continu表示结束当前循环跳至下一个循环,break表示结束本次循环(不循环了)。从i=0时开始进行循环,满足i1,则结束本次循环,执行i++,此时i=1,不满足if条件,直接进行i++,直到i==5时break,结束循环,所以共循环了6次。
58.C数组的引用中只能出现[],且是几维数组就用几个[],中括号内值为元素的行列下标,括号内可以是int型数据或是整型表达式,A选项下标越界了,其引用范围是从a[0][0]~a[2][3]。
59.B a定义的是字符串,其输入结束后系统会自动在最后加上"\0”,用以表示字符串输出完毕,所以a在内存中的长度为7。b定义的是字符,一共定义了6个字符,所以它在内存中的长度为6,但二者在数字中的长度都是6.
60.C 预处理文件包含是系统定义的。
以上答案是自己做的,比较有把握,但若个别题目解答有误还请见谅,欢迎指正。
高分求两道大一C语言编程题答案,答对的保证再追加100分
/*
1.
*/
#include stdio.h
#include malloc.h
char* ReadFile(const char* psz)
{
FILE* fp = fopen(psz, "r");
if( NULL == fp ) return NULL;
fseek(fp, 0, SEEK_END);
int nLen = ftell(fp);
char* pszBuff = (char*)malloc(nLen + 1);
fseek(fp, 0, SEEK_SET);
int nSize = fread(pszBuff, 1, nLen, fp);
pszBuff[nSize] = 0;
fclose(fp);
return pszBuff;
}
void Sort(const char* psz)
{
FILE* fp = fopen("New.txt", "w");
while( *psz )
{
if( ((*psz = '0') (*psz = '9')) ||
((*psz = 'A') (*psz = 'F')) ||
((*psz = 'a') (*psz = 'f')) )
{
printf("%c", *psz);
psz++;
continue;
}
fprintf(fp, "%c", *psz);
psz++;
}
}
int main()
{
char* pszBuff = ReadFile("Old.txt");
if( NULL == pszBuff ) return 0;
Sort(pszBuff);
free(pszBuff);
printf("\n");
}
/*
2.
*/
#include stdio.h
#include malloc.h
void input(int array[], int n)
{
for(int i = 0; i n; i++)
{
scanf("%d", array[i]);
}
}
int find(int array[], int n, int x)
{
int count = 0;
for(int i = 0; i n; i++)
{
if( x == array[i] )
{
count++;
}
}
return count;
}
main()
{
int arr[5];
printf("waiting for array input:\n");
input(arr, 5);
int x;
printf("please enter the target :\n");
scanf("%d", x);
int count = find(arr, 5, x);
if( 0 == count )
{
printf("Not find!\n");
return 0;
}
printf("the key %d count:\n", count);
}
谁有大一C语言考试题?快考试了,跪求题库··
单项选择题(每小题2分,共50分)
1、一个C程序的执行是从___A__。
A、本程序的main函数开始,到main函数结束
B、本程序的main函数开始,到本程序文件的最后一个函数结束
C、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
D、本程序文件的第一个函数开始,到本程序main函数结束
2、C语言程序的基本单位是___C___。
A、程序行 B、语句
C、函数 D、字符
3、请选出可用作C语言用户标识符的一组标识符___B___。
A、void B、a3_b3 C、For D、2a
define _123 -abc DO
WORD IF ase sizeof
主要特点
C语言是一种结构化语言,它有着清晰的层次,可按照模块的方式对程序进行编写,十分有利于程序的调试,且c语言的处理和表现能力都非常的强大,依靠非常全面的运算符和多样的数据类型,可以轻易完成各种数据结构的构建,通过指针类型更可对内存直接寻址以及对硬件进行直接操作,因此既能够用于开发系统程序,也可用于开发应用软件。
以上内容参考:百度百科-c语言
c语言编程100题,有没有大神帮帮忙
您好,c语言经典100题:
【程序1】
题目:有1,2,3,4个数字,能组成多少个互不相同且无重复数字的三位数
都是多少
1.程序分析:可填在百位,十位,个位的数字都是1,2,3,4.组成所有的排列后再去
掉不满足条件的排列.
2.程序源代码:
main()
{
int
i,j,k;
printf("\n");
for(i1;i5;i++)
/*以下为三重循环*/
for(j1;j5;j++)
for
(k1;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);
bonus1100000*0.1;bonus2bonus1+100000*0.75;
bonus4bonus2+200000*0.5;
bonus6bonus4+200000*0.3;
bonus10bonus6+400000*0.15;
if(i100000)
bonusi*0.1;
else
if(i200000)
bonusbonus1+(i-100000)*0.075;
else
if(i400000)
bonusbonus2+(i-200000)*0.05;
else
if(i600000)
bonusbonus4+(i-400000)*0.03;
else
if(i1000000)
bonusbonus6+(i-600000)*0.015;
else
bonusbonus10+(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
(i1;i2)/*如果是闰年且月份大于2,总天数应该加一天*/
sum++;
printf("it
is
the
%dth
day.",sum);}
【程序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:sum0;break;
case
2:sum31;break;
case
3:sum59;break;
case
4:sum90;break;
case
5:sum120;break;
case
6:sum151;break;
case
7:sum181;break;
case
8:sum212;break;
case
9:sum243;break;
case
10:sum273;break;
case
11:sum304;break;
case
12:sum334;break;
default:printf("data
error");break;
}
sumsum+day;
/*再加上某天的天数*/
if(year%4000||(year%40year%100!0))/*判断是不是闰年*/
leap1;
else
leap0;
if(leap1month2)/*如果是闰年且月份大于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)
{tx;xy;yt;}
/*交换x,y的值*/
if(xz)
{tz;zx;xt;}/*交换x,z的值*/
if(yz)
{ty;yz;zt;}/*交换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
a176,b219;
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
(i1;i10;i++)
{
for(j1;j10;j++)
{
resulti*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(i0;i8;i++)
{
for(j0;j8;j++)
if((i+j)%20)
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(i1;i11;i++)
{
for(j1;ji;j++)
printf("%c%c",219,219);
printf("\n");
}
}
【程序11】
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少
1.程序分析:
兔子的规律为数列1,1,2,3,5,8,13,21....
2.程序源代码:
main()
{
long
f1,f2;
int
i;
f1f21;
for(i1;i20;i++)
{
printf("%12ld
%12ld",f1,f2);
if(i%20)
printf("\n");/*控制输出,每行四个*/
f1f1+f2;
/*前两个月加起来赋值给第三个月*/
f2f1+f2;
/*前两个月加起来赋值给第三个月*/
}
}
【程序12】
题目:判断101-200之间有多少个素数,并输出所有素数.
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
则表明此数不是素数,反之是素数.
2.程序源代码:
#include
"math.h"
main()
{
int
m,i,k,h0,leap1;
printf("\n");
for(m101;m200;m++)
{
ksqrt(m+1);
for(i2;ik;i++)
if(m%i0)
{leap0;break;}
if(leap)
{printf("%-4d",m);h++;
if(h%100)
printf("\n");
}
leap1;
}
printf("\nthe
total
is
%d",h);
}