(C语言)输入一串字符,直到输入一个星号为止, 求解(C语言):输入一串字符,直到输入一个星号(*)为止,统...
\u8f93\u5165\u4e00\u4e32\u5b57\u7b26\u4e32\uff0c\u76f4\u5230\u8f93\u5165\u4e00\u4e2a\u661f\u53f7\uff08*\uff09\u4e3a\u6b62\uff0c\u7edf\u8ba1\uff08\u8f93\u51fa\uff09\u671f\u4e2d\u5b57\u6bcd\u4e2a\u6570\u548c\u6570\u5b57\u5b57\u7b26\u4e2a\u6570\uff0c#include "stdio.h"
int main(){
int ch;
int count1,count2;
ch=(char)getc();
while(ch!='*'){
if(ch='0') count1++;//\u7edf\u8ba1\u6570\u5b57\u4e2a\u6570
if( (ch='a') ||(ch>='A'&&ch<='Z') count2++;
//\u7edf\u8ba1\u5b57\u6bcd\u4e2a\u6570
ch=(char)getc();
}
return 0;
}
\u5927\u4f53\u4e0a\u5c31\u8fd9\u6837\u56e0\u4e3a\u6211\u5b66c++\u7684\u3002\u3002\u3002
#include #include int main() { char ch; int iCountChar = 0,iCountInt = 0; while((ch=getch()) != '*') { if((ch >= 'a' && ch = 'A' && ch = '0' && ch <= '9') iCountInt ++; printf("%c",ch); } printf("%d\n%d",iCountChar,iCountInt); return 0; }
\u6ee1\u610f\u8bf7\u91c7\u7eb3
main()
{ char c[100];
int i;
for(i=0 ; (c[i++]=getchar())!=‘*’ ; )
printf("%c ",c[i]);
}
这个可以输入一个字符串,直到星号。
但是字符串里面怎么会有正负统计呢?
心情好,给你写了一个,功能基本正确,就是没有写保证输入合法的部分。
注意:因为你未指定,两个数之间用什么分隔,所以,我暂时用的英文逗号。
/*
输入一串字符,直到输入一个星号为止;
统计(输出)其中的正整数和负数个数,以及所有正整数的平均值和所有负数的平均值.
*/
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#define STR_LENGTH 256 //max str length
//str->缓存区, tail->结束符, length->缓存区长度、字符串实际长度
//注意:
//在输入不正确的情况下,比如输入2-3,此程序不能保证结果正确
int InputString(char *str, char *separates, char *tails, int *length )
{
int i, len;
len = *length;
printf("请输入一串字符,以 %s 分隔, 以 %s 结尾:\n", separates, tails );
for ( i=0; i<len; i++ )
{
str[i] = getchar();
//不接受非法字符,除了数字、'+'、'-'、分隔符、结束符之外的字符
if( (str[i]<'0' || str[i]>'9')
&& ( '-' != str[i] )
&& ( '+' != str[i] )
&& ( NULL == strchr(tails, str[i]) )
&& ( NULL == strchr(separates, str[i]) ) )
{
printf("输入非法字符,程序结束。\n");
return -1;
}
//下面的处理,结束符会占一个位置,有效字符长度是最大长度减1
if( NULL != strchr( tails, str[i] ) )
break;
}
fflush( stdin );
if( i>= len )
{
printf( "输入的字符串过长,只能处理长度 %d 以内的字符串。\n", len );
return -1;
}
//输出的字符串长度不包含结束
str[i] = 0;//去掉可能存在的*
*length = i;
return 0;
}
//str->输入字符串, length->字符串长度, separates->分隔符字符串
//注意:
//strtok 线程不安全,可以查相似的函数,也可以自己写
//此函数会改变输入字符串
int StatisticsNumbers( char *str, int length, char *separates )
{
char *pStr; //处理后首个数字对应字符串
int curNum; //当前数
int posCount, posSum; //正数数目,正数的和
int negCount, negSum; //负数数目,负数的和
double posAvg, negAvg;
posCount = 0;
posSum = 0;
negCount = 0;
negSum = 0;
pStr = strtok( str, separates );
if( 0 == pStr )
{
printf( "字符串处理失败,请检查输入。\n" );
return -1;
}
while( 0 != pStr)
{
curNum = atoi( pStr );
if( curNum < 0 )
{
negCount++;
negSum += curNum;
}
else
{
posCount++;
posSum += curNum;
}
//取下一个数
pStr = strtok( NULL, separates );
}
posAvg = ( posCount > 0 ) ? ( (double)posSum/posCount ) : 0;
negAvg = ( negCount > 0 ) ? ( (double)negSum/negCount ) : 0;
printf( "其中,正数有 %d 个,所有正数的平均值是 %f; 负数有 %d 个,所有负数的平均值是 %f。\n",
posCount, posAvg, negCount, negAvg );
return 0;
}
int main(int argc, char* argv[])
{
//TestCylinderVolume();
//InputStrings();
char str[STR_LENGTH];
char separates[] = ",";
char tails[] = "*";
int length;
int rv;
char ans;
do
{
length = STR_LENGTH;
memset( str, 0, length );
rv = InputString( str, separates, tails, &length );
if( rv != 0)
{
printf( "InputString error.\n" );
return 0;
}
printf( "输入的字符串是:\n%s\n", str );
rv = StatisticsNumbers( str, length, separates );
if( rv != 0)
{
printf( "InputString error.\n" );
return 0;
}
printf("是否继续?(输入y继续)\n");
scanf( "%c", &ans );
fflush( stdin );
} while ( 'Y'== ans || 'y' == ans );
return 0;
}
你的这是啥要求啊,字符串里面有蒸熟和复述的输入吗?
绛旓細绋嬪簭娌℃湁闂锛屽彧鏄杈涓涓瓧绗鎸変竴涓嬪洖杞canf鎵嶈兘鎶婂艰祴缁檆h 濡傛灉瑕佸疄鐜颁綘鐨勬兂娉曪紝瑕佺敤鍒癵etch锛堬級鍑芥暟锛屽寘鍚簬conio.h澶存枃浠朵腑 include<stdio.h> include<conio.h> void main(){ char ch;printf("璇杈撳叆瀛楃\n");do ch = getche();while(ch!='\141');printf("%c",ch);} ...
绛旓細include<iostream> using namespace std;void main(){ char ch;while(cin>>ch){ if(ch == '#')break;if(ch <= 96 && ch >= 65)ch += 32;else if(ch >= 97)ch -= 32;cout<<"杞崲澶у皬鍐欙細"<<ch<<endl;} }
绛旓細main(){ char c, int i;scanf( " %c" , &c);while ( c !='#' ){ scanf( " %c" , &c);if ( c >= 'a' && c <= 'w' || c>= 'A' && c <= 'W' ) c= c + 3;elsif ( c > 'w' && c <='z' || c> 'W' && c <= 'Z' ) c=c-23;elsif ( c<...
绛旓細鍦C璇█涓紝鍙互浣跨敤`scanf`鍑芥暟鏉杈撳叆瀛楃锛骞朵娇鐢╜printf`鍑芥暟杈撳嚭瀵瑰簲鐨勫瓧姣嶃備笅闈㈡槸涓涓绠鍗曠殑绀轰緥浠g爜锛屾紨绀轰簡濡備綍杈撳叆浠绘剰涓瓧绗﹀苟杈撳嚭瀵瑰簲鐨勫瓧姣嶏細鍦ㄨ繖涓ず渚嬩腑锛岀▼搴忎細涓嶆柇杈撳叆瀛楃锛屽苟鍦ㄦ瘡娆¤緭鍏ュ悗杈撳嚭瀵瑰簲鐨勫瓧姣锛岀洿鍒拌緭鍏ュ瓧绗'q'鏃堕鍑哄惊鐜傛敞鎰忓湪`scanf`鍑芥暟涓殑`%c`鍓嶅姞浜嗕竴涓┖鏍硷紝杩欐槸...
绛旓細while锛1锛墈 char a = 0;scanf锛"%c",&a锛;if锛'*' == a锛塨reak;else printf("%c",a);} // 鍦ㄦ寰幆閲杈撳叆涓涓鏁,鏄剧ず涓涓暟,鑻ヨ緭鍏 * 鍙风洿鎺ラ鍑轰笉鏄剧ず,for(;;){ char a = 0;scanf锛"%c",&a锛;if锛'*' == a锛塨reak;else printf("%c",a);}// 鍦ㄦ寰幆閲岃緭鍏ヤ竴...
绛旓細include<stdio.h> void main(){ char *p[20];printf("\n Please input some chars:");scanf("%s",p);printf("\n You inputed: %s\n",p);getchar();} 娉ㄦ剰锛岃绋嬪簭鏈澶氬彲杈撳叆20涓瀛楃锛濡傛灉瑕佹洿澶氾紝鑷繁鎶*p[20];閲岀殑鏁板瓧鏀瑰緱鍒楀ぇ灏辫浜 ...
绛旓細include<stdio.h> int main(){ int num = 0,upper = 0,low = 0,other = 0;char i;//闆舵椂瀛樺偍鍙橀噺 while(1){ scanf("%c",&i);if(i >= '0' && i <= '9')++num;else if(i >= 'A' && i <= 'Z')++upper;else if(i >= 'a' && i <= 'z')++low;else ++other...
绛旓細include <stdio.h> void main(){ int i=0,n=10;char c,s[10];while((c=getchar())!='='){ s[i]=c;i++;} s[i]='\0';printf("%s\n",s);} 浜诧紝浣犵湅鐪嬪惂锛屼笉鎳傚彲浠ョ户缁拷闂垜锛
绛旓細include <stdio.h>int main(void){ char ch; while((ch=getchar())!='#') printf("%c",ch); printf("\n"); return 0;}
绛旓細杩愯鎴浘锛歩nclude<stdio.h>int main(){int n=0; char c; while((c=getchar())!='\n') if(c>='A'&&c<='Z')n++; printf("%d\n",n); return 0;}