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