知識點: 數組的運用,結合循環
getchar()的用法
注意:對於數組a[1000],沒有a=getchar()然後就把字符一個一個裝進數組裡面,這是錯誤的。
還有scanf("%s”,a);也不是正確的。
內容: 輸入若干個字符(以‘#'作為結束),計算輸入的字符中字母‘a'或‘A’出現的次數。
輸入說明:
一行若干個字符。
輸出說明:
一個整數,為a或者A字符出現次數和。
輸入樣例: abcdefABCDEFaaAA#
輸出樣例 : 6
1 #include <stdio.h> 2 int main() 3 { 4 char a[500]; 5 int i,s=0; 6 for (i=0;i<500;i++) 7 { 8 a[i]=getchar(); 9 if(a[i]==65||a[i]==97) 10 { 11 s+=1; 12 } 13 if(a[i]==35) 14 { 15 break; 16 } 17 } 18 printf("%d\n",s); 19 return 0; 20 }
#include<stdio.h>
#include<stdlib.h>
void main()
{
char s[200];
int m[200][2];
int i,j,k,n,l;
printf("please enter a string\n");
scanf("%s",s); // 有空白字符串行用 gets 輸入,無空白字符串用scanf
l = strlen(s);
n=1;
m[n][0]=s[0];
m[n][1]=1;
for (i=1;i<=l;i++){
for (j=1;j<=n;j++)
{
if (s[i]== (m[j][0] & 0xff) ) {m[j][1]++; goto Lab;};
};
n++;
m[n][0]=s[i];
m[n][1]=1;
Lab:;
}
// 如果要按ASCII值大小排列則做:
for (i=1;i<n-1;i++)
for (j=i+1;j<n;j++)
if (m[i][0] > m[j][0]){
k = m[i][0]; m[i][0]=m[j][0];m[j][0]=k;
k = m[i][1]; m[i][1]=m[j][1];m[j][1]=k;
}
for (i=1;i<n;i++) printf("%c=%d ",m[i][0],m[i][1]);
exit(0);
}
#include <string.h>
#include <stdio.h>
void fun(char s[],int num[]) /*逗號*/
{int i;
for(i=0;i<strlen(s);i++)
{if(s[i]<='9'&& s[i]>='0')
num[0]++;
if(s[i]<='Z' && s[i]>='A')
num[1]++;
if(s[i]<='z' && s[i]>='a')
num[2]++;
if(s[i]==' ')
num[3]++;
}
printf("Number Large letter Small letter Null\n");
for(i=0;i<4;i++)
printf("%11d",num[i]);
}
main()
{int num[4]={0,0,0,0};char s[200]; /*限定數組長度,在主函數定義*/
gets(s);
fun(s,num); /*指針調用不用加長度*/
}
我運行可以