C語言練習(1)

來源:互聯網
上載者:User

1.編程實現對鍵盤輸入的英文名句子進行加密。用加密方法為,當內容為英文字母時其在26字母中的其後三個字母

代替該字母,若為其它字元時不變。
int _tmain(int argc, _TCHAR* argv[])
{
 printf("Please input your words:/n");
 char str[100];
 char c;
 gets(str);
 for(int i=0;i<100;i++)
 {
  c=str[i];
  if(c>='a'&&c<='z')
   putchar((c-'a'+3)%26+'a');
  else if(c>='A'&&c<='Z')
   putchar((c-'A'+3)%26+'A');
 }

 return 0;
}
2.編程實現將任意的十進位整數轉換成R進位數(R在2-16之間)。
int _tmain(int argc, _TCHAR* argv[])
{
 int n,m;
 int i=0;
 int temp[100];
 printf("Please input your number:/n");
 scanf("%d",&n);
 printf("Please input your base number:/n");
 scanf("%d",&m);
 while(n!=0)
 {
  temp[i]=n%m;
  n=n/m;
  i++;
 }
 while(i--!=0)
  printf("%d",temp[i]);
 return 0;
}
3.從鍵盤輸入一指定金額(以元為單位,如345.78),然後顯示支付該金額的各種面額人民幣數量,要求顯示100元

、50元、10元、5元、2元、1元、1角、5分、1分各多少張。
 int type[9]={10000,5000,1000,500,200,100,10,5,1};
 printf("Please input your money:/n");
 float n;
 scanf("%f",&n);
 int i=0;
 float m=n*100;
 int number=(int)m;
 printf("%d",number);
 while(number!=0)
 {
  printf("%d ",number);
  printf("the count of %f is %d/n",((float)type[i])/100,number/type[i]);
  number%=type[i++];
  
 }
 return 0;
出現的問題是:當我把float m=n*100;int number=(int)m;換成int number=(int)(n*100)的時候,為什麼21.4它總

是變成2139,而不是2140呢?也就是它把21.4改變成21.39差0.01呢?
4、隨機產生20個[10,50]的正整數存放到數組中,並求數組中的所有元素最大值、最小值、平均值及各元素之和。
#include<time.h>
#include<stdlib.h>

int _tmain(int argc, _TCHAR* argv[])
{
 int a[20];
 int i,min=0,max=0,sum=0;
 srand((int)time(0));
 for(i=0;i<20;i++)
 {
  a[i]=rand()%41+10;
  sum+=a[i];
  if(min>a[i])min=a[i];
  if(max<a[i])max=a[i];
 }
 printf("min=%d max=%d sum=%d ave=%f ",min,max,sum,float(sum)/20);

 return 0;
}
5.編程在一個已知的字串中尋找最長單詞,假定字串中只含字母和空格,空格用來分隔不同單詞。
#include<stdlib.h>

int _tmain(int argc, _TCHAR* argv[])
{
 char str[100],save[100];
 int start=0,max=0,heigh=0;
 int i=0;
 printf("Please input your numbers:/n");
 gets(str);
 while(str[i]!='/0')
 {
  if(str[i]==' ')
  {
   if(max<heigh)
   {
    max=heigh;
    start=i-heigh;
   }
   heigh=0;
  }
  else
   heigh++;
  i++;
 }
 if(max<=heigh)
  max=heigh; //容易忘掉,切忌
 printf("max=%d ",max);
 while(max-->0)
 {
  printf("%c",str[start++]);
 }
 return 0;
}
6.任何一個自然數m的立方均可寫成m個連續奇數之和。例如:
 1^3=1
 2^3=3+5
 3^3=7+9+11
 4^3=13+15+17+19
#include<stdlib.h>

int _tmain(int argc, _TCHAR* argv[])
{
 int n,j;
 int sum=0,start=0;
 scanf("%d",&n);
 for(j=0;j<n;j++)
  sum+=j;
 start=sum*2+1;
 for(j=0;j<n;j++)
  printf("%d ",start+j*2);
 return 0;
}
7.知abc+cba=1333,其中a,b,c均為一位元,編程求出滿足條件的a,b,c所有組合。
#include<stdlib.h>

int _tmain(int argc, _TCHAR* argv[])
{
 int a,b,c;
 for(a=4;a<9;a++)
 {
  c=13-a;
  if((c+1*10+a*100+a+1*10+c*100)==1333)
   printf("a=%d,b=1,c=%d/n",a,c);
 }
 return 0;
}
8.編製一個完成兩個數的四則運算程式。如:使用者輸入34+56則輸出結果90.00。要求運算結果保留兩位小數,使用者輸入時一次將兩個數和操作符輸入。
#include<stdlib.h>

int _tmain(int argc, _TCHAR* argv[])
{
 float a,b;
 char mark;
 scanf("%f%c%f",&a,&mark,&b);
 switch(mark)
 {
 case '+':printf("%.2f",a+b);break;
 case '-':printf("%.2f",a-b);break;
 case '*':printf("%.2f",a*b);break;
 case '/':printf("%.2f",a/b);break;
 }
 return 0;
}
9.耶穌有13個門徒,其中有一個就是出賣耶穌的叛徒,請用排除法找出這位叛徒:13人圍坐一圈,從第一個開始報號:1,2,3,1,2,3……,凡是報到“3”就退出圈子,最後留在圈內的人就是出賣耶穌的叛徒,請找出它原來的序號。
int _tmain(int argc, _TCHAR* argv[])
{
 int people[14]={0};
 int i,j,now=1;
 for(i=1;i<13;i++)
 {
  j=1;
  while(j!=3){
   if(people[now]==0)
    j++;
   if(now>13)
    now=1;
   else
    now++;
  }
  people[now]=1;
  printf("%d ",now);
  j=0;
 }
 return 0;
}
printf("a=%d/n", a); /*結果輸出十進位整數a=1234*/

printf("a=%6d/n", a); /*結果輸出6位十進位數a= 1234*/

printf("a=%06d/n", a); /*結果輸出6位十進位數a=001234*/

printf("a=%2d/n", a); /*a超過2位, 按實際值輸出a=1234*/

printf("*i=%4d/n", *i); /*輸出4位十進位整數*i= 12*/

printf("*i=%-4d/n", *i); /*輸出靠左對齊4位十進位整數*i=12*/

printf("i=%p/n", i); /*輸出地址i=06E4*/

printf("f=%f/n", f); /*輸出浮點數f=3.141593*/

printf("f=6.4f/n", f); /*輸出6位其中小數點後4位的浮點數

f=3.1416*/

printf("x=%lf/n", x); /*輸出長浮點數x=0.123457*/

printf("x=%18.16lf/n", x);/*輸出18位其中小數點後16位的長浮點數x=0.1234567898765432*/

printf("c=%c/n", c); /*輸出字元c=A*/

printf("c=%x/n", c); /*輸出字元的ASCII碼值c=41*/

printf("s[]=%s/n", s); /*輸出數組字串s[]=Hello, Comrade*/

printf("s[]=%6.9s/n", s);/*輸出最多9個字元的字串s[]=Hello, Co*/

printf("s=%p/n", s); /*輸出數組字串首字元地址s=FFBE*/

printf("*p=%s/n", p); /* 輸出指標字串p=How do you do*/

printf("p=%p/n", p); /*輸出指標的值p=0194*/

 

 

 

程式在VS2005全部運行成功,所有的程式並沒有加#include "stdafx.h"標頭檔,編程過少故此練習。關於數組方面

並沒有寫出溢出處理,因為省事。
希望看題的人至少提出幾條意見,最好是能簡化程式,比我的程式簡單請您一定寫出,My Code品質並不高,所以一定提出點意見。瞧不起的小程式,原來編起來卻一褲衩毛病。。。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.