① c語言要求控制台 限制控制台只能一行輸入20個字元,怎麼搞啊
#include <stdio.h>
#include <conio.h>
#define MAX_LINE_INPUT_COUNT 20
void GetInputCharacter(char* szInput)
{
int i;
char cTmp;
for (i=0; i<MAX_LINE_INPUT_COUNT; i++)
{
cTmp = getch();
if (cTmp == '\x0d' || cTmp == '\n')
{
printf("\n");
break;
}
else
{
szInput[i] = cTmp;
}
printf("%c",szInput[i]);
}
while (i == MAX_LINE_INPUT_COUNT)
{
cTmp = getch();
if (cTmp == '\x0d' || cTmp == '\n')
{
printf("\n");
break;
}
}
}
void main()
{
char szInput[MAX_LINE_INPUT_COUNT+1] = {0};
GetInputCharacter(szInput);
printf("your input string: %s\n",szInput);
return;
}
② C語言編程:輸入一行字元,至少50個,統計其中英文字母,...
#include "stdio.h"
#include "string.h"
void main()
{
char str[100];
int i;
int count=0;
printf("請輸入字元串:\n");
gets(str);
for(i=0;;i++)
{if(str[i]>'A'&&str[i]<'z')
count++;
if(str[i+1]=='\0')
break;
}
printf("字母個數為:%d\n",count);
}
③ c語言char可以存多少個字元
C語言中,char是一個字元類型的關鍵字。
如果利用char定義一個變數,那麼只能存放一個字元;
如果利用char定義一個數組或字元指針,那麼存放的字元個數根據用戶分配的內存空間來定。
(3)c語言一行最多多少字元擴展閱讀:
char用法實例:
用 char 類型來專門表示一個字元,例如:
char a='1';
char b='$';
char c='X';
char d=' '; // 空格也是一個字元
char e='63'; //也可以使用轉義字元的形式
char 稱為字元類型,只能用單引號' '來包圍,不能用雙引號" "包圍。而字元串只能用雙引號" "包圍,不能用單引號' '包圍。
輸出字元使用 %c,輸出字元串使用 %s。
④ c語言:輸入4行字元,每行不超過60個字元,將空格符後第一個英文字母改為大寫(原為大寫的則不變)
#include<stdio.h>
#include<string.h>
int main()
{
char a[60];
int d,i;
while(gets(a))
{
d=strlen(a);
for(i=0;i<d;i++)
{ if(i==0)
a[0]=a[0]-32;
if(a[i]==' ')
a[i+4]=a[i+4]-32;
printf("%c",a[i]);
}
printf(" ");
}
return 0;
}
(4)c語言一行最多多少字元擴展閱讀:
main()函數用法:
大多數UNIX系統對main函數提供了三個參數,原型如下:
intmain(intargc,char*argv[],char*env[]);
其中第三個參數是環境表地址。
ANSIC規定main函數只有兩個參數,而且第三個參數與全局變數environ相比也沒有帶來更多益處,所以POSIX.1也規定應使用environ而不使用第三個參數。
通常用getenv和putenv函數來存取特定的環境變數,而不是用environ變數。
main函數的原型多是下面這種形式:
intmain(intargc,char*argv[]),參數argc代表了輸入參數的個數,char*argv[]表示傳入的參數的字元串,是一個字元串數組。
例如在linux平台下編寫一個小程序:
int main(intargc,char*argv[])
{
int i;
printf("argc:%d\n",argc);
for(i=0;i<argc;i++)
{
printf("argv[%d]:%s\n",i,argv[i]);
}
exit(0);
}
用gcc編譯後形成一個a.out的可執行的文件,運行a.out,其結果是:
argc=1,argv[0]=」a.out」
運行的程序的文件名,也佔用一個參數位置,也就是說argv數組中的第一個單元指向的字元串總是可執行程序的名字,以後的單元指向的字元串依次是程序調用時的參數。這個賦值過程是操作系統完成的,只需要拿來用就可以了。
在命令行參數的提交中,系統會自動給指針數組後加上一個NULL,所以for(i=0;i<argc;i++)這句也可以換成while(*argv!=NULL)
int main(intargc)省略其它參數的定義也是可以的,這樣運行時候argc就直接返回參數個數,而不返回其它。
運行命令行參數帶有char*argv[]的時候,如果輸入參數帶有空格,應該用雙引號括起來。
⑤ C語言如何將每行代碼限制在80個字元
char ch;改成char ch,x;——即增設一個記數變數x。
在putchar(ch);後加一句if(++x%80==0) putchar(' ');。
最好把while(!feof(fp))改成while((ch=fgetc(fp))!=EOF),並把後面的ch=fgetc(fp)刪除;或者在while(!feof(fp))前加一句ch=fgetc(fp);,不然讀到文件最後會產生錯誤。
⑥ C語言的printf(「」);裡面可以輸入多少個數字或字元
printf()函數是格式輸出函數,請求printf()列印變數的指令取決與變數的類型.例如,在列印整數是使用%d符號,在列印字元是用%c 符號.這些符號被稱為轉換說明.因為它們指定了如何不數據轉換成可顯示的形式.下列列出的是ANSIC標准peintf()提供的各種轉換說明.
轉換說明及作為結果的列印輸出%a 浮點數、十六進制數字和p-記數法(C99)
%A浮點數、十六進制數字和p-記法(C99)
%c一個字元
%d有符號十進制整數
%e浮點數、e-記數法
%E浮點數、E-記數法
%f浮點數、十進制記數法
%g根據數值不同自動選擇%f或%e.
%G根據數值不同自動選擇%f或%e.
%i 有符號十進制數(與%d相同)
%o無符號八進制整數
%p指針
%s字元串
%u無符號十進制整數
%x使用十六進制數字0f的無符號十六進制整數
%X使用十六進制數字0f的無符號十六進制整數
%%列印一個百分號 使用printf ()函數printf()的基本形式:printf("格式控制字元串",變數列表);
#include<cstdio> int main()
{
//for int
int i=30122121;
long i2=309095024l;
short i3=30;
unsigned i4=2123453; printf("%d,%o,%x,%X,%ld,%hd,%u\n",i,i,i,i,i2,i3,i4);//如果是:%l,%h,則輸不出結果
printf("%d,%ld\n",i,i2);//試驗不出%ld和%d之間的差別,因為long是4bytes
printf("%hd,%hd\n\n\n",i,i3);//試驗了%hd和%d之間的差別,因為short是2bytes
//for string and char
char ch1='d';
unsigned char ch2=160;
char *str="Hello everyone!";
printf("%c,%u,%s\n\n\n",ch1,ch2,str);//unsigned char超過128的沒有字元對應
//for float and double,unsigned and signed can not be used with double and float
float fl=2.566545445F;//or 2.566545445f
double dl=265.5651445;
long double dl2=2.5654441454;
//%g沒有e格式,默認6位包括小數點前面的數,
//%f沒有e格式,默認6位僅只小數點後麵包含6位
//%e採用e格式,默認6位為轉化後的小數點後面的6位
printf("%f,%e,%g,%.7f\n",fl,dl,dl,dl);
printf("%f,%E,%G,%f\n",fl,dl,dl,dl);//%F is wrong
printf("%.8f,%.10e\n",fl,dl);
printf("%.8e,%.10f\n\n\n",fl,dl);
//for point
int *iP=&i;
char *iP1=new char;
void *iP2;//dangerous!
printf("%p,%p,%p\n\n\n",iP,iP1,iP2);
//其他知識:負號,表示左對齊(默認是右對齊);%6.3,6表示寬度,3表示精度
char *s="Hello world!";
printf(":%s: \n:%10s: \n:%.10s: \n:%-10s: \n:%.15s: \n:%-15s: \n:%15.10s: \n:%-15.10s:\n\n\n",
s,s,s,s,s,s,s,s); double ddd=563.908556444;
printf(":%g: \n:%10g: \n:%.10g: \n:%-10g: \n:%.15g: \n:%-15g: \n:%15.10g: \n:%-15.10g:\n\n\n",
ddd,ddd,ddd,ddd,ddd,ddd,ddd,ddd);
//還有一個特殊的格式%*.* ,這兩個星號的值分別由第二個和第三個參數的值指定 printf("%.*s \n", 8, "abcdefgggggg");
printf("%*.*f \n", 3,3, 1.25456f); return 0;
}
⑦ C語言編程,怎麼從鍵盤輸入一行字元,要求少於20個
#include<stdio.h>
int main()
{
int c[20];
printf("Please enter a character:");
while((c[20]=getchar())!='#')/*這里用c[20]等於將輸入的字元直接賦值給下標為20的哪個數組元素也就是說你的C[0]到c[19]都沒賦值,而且你要輸入的是20個元素而c[20]是第21個元素了, 再有就是while後面如果沒有其他語句就應該加一個 ; 符號表示執行一個空語句*/
if(c[20]>='a'&&c[20]<='z')
putchar(c[20]-'a'+'A');
else
putchar(c[20]);
printf("\n");
return 0;
}
#include<stdio.h>
int main()
{
int c[20];
int ch,i=0;
printf("Please enter a character:");
while((ch=getchar())!='#')
{
c[i]=ch;
i++;
}
if(c[20]>='a'&&c[20]<='z')
putchar(c[20]-'a'+'A');
else
putchar(c[20]);
printf("\n");
return 0;
}
⑧ C語言為什麼一個2行4列的二維數組,每一行可以存放最多三個字元的字元串
因為2行4列的二維數組,每一行有4個空間,三個字元佔了三個空間,字元串末尾還要有串的結束標識符'\0'(ASCII碼第0號字元),結束標識符要佔據一個空間,一共占據4個空間,所以最多存放3個字元。當然你也可以每一行存放4個字元,不要存放串尾結束標識符,但是如果在輸出的時候沒有加以控制,會導致超出數組范圍的輸出後面內存單元內容,直至輸出到下一個'\0'才會停止輸出。
⑨ C語言 輸入一行不超過80字元串 將其中所有的$改為s 要求用指針 我自己做的 不知道哪裡錯
//下面是正確的程序,改過有點多,不一一指出了。
#include<stdio.h>
#define N 80
void main()
{
char a[N],*p;
int i;
printf("請輸入字元串:\n");
gets(a);
p=a;
for(i=0;*p;i++,p++) //零與字母o都分不清楚。
if(*p=='$')
*p='s';
printf("%s\n",a);
}
⑩ C語言規定一個標識符允許的字元個數是多少個
規定標識符最長可達255個字元,但只有前面32個字元在編譯時有效,所以在編寫源程序時標識符的長度建議不要超過32個字元。