C语言连线题
⑴ c语言练习题,
#include<stdio.h>
voidmain(){
inti=0,j,k,num=0;
chars[100];
while((s[i]=getchar())!='#')
i++;
for(j=0;j<=i;j++)
{
if(s[j]=='.')
{s[j]='!';num++;j++;}
if(s[j]=='!')
{
for(k=i+1;k>=j+1;k--)s[k]=s[k-1];
num++;j++;
}
}
printf("进行了%d次替换",num);
}
⑵ 一道c语言的练习题
#include "stdio.h"
int Judge(const char *a,const char *b){
int s,n;
for(s=n=0;n<10;s+=a[n]==b[n++]);
return s;
}
int main(int argc,char *argv[]){
const char std[]="ABCDBBCBBC";
char ans[10],i,t;
printf("Please enter your answer(orderly sequence of ABCD)... ");
while(1){
if(scanf("%10s",ans)==1)
for(i=0;i<10;i++)
if(ans[i]!='A' && ans[i]!='B' && ans[i]!='C' && ans[i]!='D')
break;
if(i>=10)
break;
printf("Input error, redo: Please enter your answer(orderly sequence of ABCD)... ");
}
printf(" Correct answer: ");
for(t=Judge(std,ans),i=0;i<10;i++)
if(std[i]==ans[i])
printf("%2d",i+1);
printf(" TOTAL: %d ",10*t);
return 0;
}
代码格式和运行样例图片:
⑶ c语言顺序结构练习题
【例】输入三角形的三边长,求三角形面积
已知三角形的三边长a、b、c,则该三角形的面积公式为:
area=( s(s-a)(s-b)(s-c) )1/2
其中s = (a+b+c)/2。
源程序如下:
#include <stdio.h>#include <math.h>int main(void){ float a,b,c,s,area; scanf("%f,%f,%f",&a,&b,&c); s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n",a,b,c,s); printf("area=%7.2f\n",area); return 0;}
【例2】求ax2+bx+c=0方程的根,a、b、c由键盘输入,设b2-4ac>0。
源程序如下:
#include <stdio.h>#include <math.h>int main(void){ float a,b,c,disc,x1,x2,p,q; scanf("a=%f,b=%f,c=%f",&a,&b,&c); disc=b*b-4*a*c; p=-b/(2*a); q=sqrt(disc)/(2*a); x1=p+q;x2=p-q; printf("\nx1=%5.2f\nx2=%5.2f\n",x1,x2); return 0;}
如果你希望更加深入和透彻地学习编程,
⑷ C语言练习题
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
if(n%5==0&&n%7==0)
puts("Yes!");
return 0;
}
⑸ c语言练习题 练习2 3 4
完全按照你题意写的。题目中元素 就是指 我代码中的链表节点!
注释我已经写的不能再详细了。你应该能看得懂。
#include<stdio.h>
#include<malloc.h>
#include<string.h>
typedefstructentry
{
intid;//你没有告诉我entry结构成员是什么,我随便定义几个个成员意思意思,你自己改吧!!!!!!!!
charname[11];
intscore;
structentry*next;
}ETY;
voidprintfEntry(ETY**etyHeadPoint);//打印链表
ETY*findEntry(ETY**etyHeadPoint,intid);//既然题意要求insertEntry参数2是指定节点,那么就必须有函数能找出指点节点地址
//参数1成员id值我这里通过id查找节点,找到返回节点地址,如果没找到返回NULL
intinsertEntry(ETY*etyHead,ETY*ety);//参数1:指向头节点指针的指针
//参数2:指定的节点指针,新节点将插在该节点之后,如果是NULL则新节点直接插在首节点位置
//返回0创建了首节点返回1顶替了首节点位置返回2插入了指定节点后面返回3异常
intremoveEntry(ETY*ety);//按照题意只有1个参数就是指定的节点。函数将根据参数删除该节点之后的节点或删除首节点
//参数:想要删除的节点的前一个节点如果传参是头节点将删除首节点返回0首节点删除成功返回1非首节点删除成功返回2无节点删除
intid;//成员ID我直接全局自增,遍历节点用
intmain()
{
ETY*etyHead=(ETY*)malloc(sizeof(ETY));//定义链表头节点指针,头结点不存储数据仅指向首节点,用于链表遍历
etyHead->id=-1;//将-1作为判断头节点的值用于删除
etyHead->next=NULL;
ETY*etyBYid;
intfindId,re;
id=0;
printf("第一次插入,先创建个首节点
");
re=insertEntry(etyHead,NULL);
printf("执行后,链表内容为:
");
printfEntry(&(etyHead));
printf("
");
printf("在链表开头插入了一个新节点顶替首节点位置,节点后移
");
re=insertEntry(etyHead,NULL);
printf("执行后,链表内容为:
");
printfEntry(&(etyHead));
printf("
");
while(1)
{
printf("指定节点,并在其后再插入1个新节点
");
printf("输入一个已有节点的ID(输入-1结束当前插入操作):");
scanf("%d",&findId);
if(findId<0)
{
printf("
");
break;
}
etyBYid=findEntry(&(etyHead),findId);
if(etyBYid==NULL)
{
printf("ID不存在,请重新输入!
");
continue;
}
re=insertEntry(etyHead,etyBYid);
if(re==2)
printf("在ID=%d的节点后面插入了ID=%d的新节点
",findId,id-1);
printf("执行后,链表内容为:
");
printfEntry(&(etyHead));
printf("
");
}
printf("程序执行删除首节点!!
");
re=removeEntry(etyHead);
printf("执行后,链表内容为:
");
printfEntry(&(etyHead));
printf("
");
while(1)
{
printf("指定一个节点,程序将删除该节点之后的一个节点
");
//返回0首节点删除成功返回1非首节点删除成功返回2无节点删除
printf("输入一个已有节点的ID(输入-1结束当前插入操作):");
scanf("%d",&findId);
if(findId<0)
{
printf("
");
break;
}
etyBYid=findEntry(&(etyHead),findId);
if(etyBYid==NULL)
{
printf("ID不存在,请重新输入!
");
continue;
}
re=removeEntry(etyBYid);
printf("执行后,链表内容为:
");
printfEntry(&(etyHead));
printf("
");
}
return0;
}
voidprintfEntry(ETY**etyHeadPoint)//打印链表
{
intcount=1;
ETY*etyHead=*(etyHeadPoint);
ETY*etyHeadSave=etyHead;
while(etyHead->next!=NULL)
{
printf("节点%dID:%d姓名:%s分数:%d
",count++,etyHead->next->id,etyHead->next->name,etyHead->next->score);
etyHead=etyHead->next;
}
etyHead=etyHeadSave;
}
ETY*findEntry(ETY**etyHeadPoint,intid)//参数1:指向头节点指针的指针参数2:用于查找的成员id值
{
ETY*etyHead=*(etyHeadPoint);
ETY*etyHeadSave=etyHead;
ETY*theETY;
while(etyHead->next!=NULL)
{
theETY=etyHead->next;
if(theETY->id==id)
{
etyHead=etyHeadSave;
returntheETY;
}
etyHead=etyHead->next;
}
etyHead=etyHeadSave;
returnNULL;
}
intremoveEntry(ETY*ety)
//参数:想要删除的节点的前一个节点如果传参是头节点将删除首节点返回0首节点删除成功返回1非首节点删除成功返回2无节点删除
{
intre;
if(ety->next==NULL)
{
printf("该节点已是最后一个节点,无节点删除!
");
return2;
}
if(ety->id==-1)//如传参是头节点删除首节点
{
printf("传参为头节点,将ID=%d的首节点!
",ety->next->id);
re=0;
}
if(ety->next!=NULL)
{
printf("将该节点之后的ID=%d的节点删除!
",ety->next->id);
re=1;
}
ETY*etyDEL=ety->next;//将要删除的节点
ETY*etyDELnext=etyDEL->next;//保存删除节点之后的节点
ety->next=etyDELnext;//重组链表
etyDEL->next=NULL;//删除节点
free(etyDEL);//释放内存
etyDEL=NULL;
returnre;
}
//参数1:头节点指针参数2:指定的节点指针,新节点将插在该节点之后,如果是NULL则新节点直接插在首节点位置
//返回0创建了首节点返回1顶替了首节点位置返回2插入了指定节点后面返回3异常
intinsertEntry(ETY*etyHead,ETY*ety)
{
ETY*etyNew=(ETY*)malloc(sizeof(ETY));
if(etyNew==NULL)
{
printf("内存申请失败!!");
return3;
}
etyNew->id=id;
printf("分别输入新节点姓名(最多10字符)、分数:");
scanf("%s%d",etyNew->name,&(etyNew->score));
etyNew->next=NULL;
id++;
if(ety==NULL)
{
if(etyHead->next==NULL)//创建首节点
{
etyHead->next=etyNew;
return0;
}
else//顶替首节点位置首节点后移
{
etyNew->next=etyHead->next;
etyHead->next=etyNew;
return1;
}
}
else//在现有节点后面插入
{
etyNew->next=ety->next;
ety->next=etyNew;
return2;
}
}
⑹ C语言程序设计题、实现两个字符串的连接、
C中的字符串都是由一个char指针指向字符串的第一个字符,用'\0'(ASCII码值为0)来表示字内符串的结尾
while (*p1!='\0') p1++; //表示p1指针没容有到字符串尾时就跳到下一个字符
以上循环结束后p1指针肯定指向字符串的结尾了
然后
while (*p2!='\0'){*p1=*p2,p1++;p2++}//这里是把p2从头到尾复制到p1的位置,由于p1已经指向字符串结尾了,所以相当于连接字符串了
⑺ 用c语言编写一个选择题程序,每道题之间怎么连接单个程序类似于这
#include <stdio.h>
void main()
{
int count = 0;
char answer;
char name[20];
int num;
printf("欢迎来到皮皮蟹设计的选择题考试程序!\n");
printf("请输入您的姓名:");
scanf("%s",&name);
printf("请输入您的学号:");
scanf("%d",&num);
system("pause");
printf("考试开始!时间为30分钟\n");
printf("1.请选出 缺乏的,欠缺的 的英文翻译\n");
printf(" A、courtesy\n B、coward\n C、deficient\n D、deflect\n");
x: answer = getchar();
switch(answer)
{
case 'C' : printf("回答正确,加15分\n"); count =count +15;
break;
case 'A' : printf("回答错误!");
break;
case 'B' : printf("回答错误!");
break;
case 'D' : printf("回答错误!");
break;
default : goto x;
break;
}
system("pause");
printf("2.请选出 谦虚 谦恭 请安 的英文翻译\n");
printf(" A、courtesy\n B、coward\n C、deficient\n D、deflect\n");
l: answer = getchar();
switch(answer)
{
case 'A' : printf("回答正确,加15分\n"); count =count +15;
break;
case 'B' : printf("回答错误!");
break;
case 'C' : printf("回答错误!");
break;
case 'D' : printf("回答错误!");
break;
default :goto l;
break;
}
}
我把后面的部分省略了,我直接在每道题default后面用了goto语句,既能让别人按错键重新按,又能将两道题连起来。
⑻ c语言练习题
a = -20; // a是有符号整型,赋值后值为-20
c = 19.5; // c是无符号整型,赋值后值为19
a+c,两者类型不同,要进行整数类型提升,a会被提升为无符号整型,设int为4个字节,则-20对应的无符号整型值是4294967276,因此a+c=4294967276+19=4294967295,这个值为真,且大于0
因此(a+c)?c:a将返回c的值19,d=19
((a+c)>0)?a:c将返回a的值-20,b=-20
⑼ C语言基础练习题
#include<stdio.h>
intmain(void)
{
unsignedlongcnto,cnte;
doublesumo,sume;
longn;
for(sumo=sume=cnto=cnte=0;scanf("%ld",&n)==1&&n;)
{
if(n%2)
{
sumo+=n;
cnto++;
}
else
{
sume+=n;
cnte++;
}
}
printf("%lu%lf%lu%lf ",cnte,sume/cnte,cnto,sumo/cnto);
return0;
}