(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

#include <stdio.h>
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;
}

你的这是啥要求啊,字符串里面有蒸熟和复述的输入吗?

  • C璇█姹傛暀:鎯充竴鐩杈撳叆瀛楃鐩村埌a鏃跺仠姝㈠苟杈撳嚭a銆傜粨鏋滄庝箞涓嶄竴鏍穇鐧惧害鐭...
    绛旓細绋嬪簭娌℃湁闂锛屽彧鏄杈涓涓瓧绗鎸変竴涓嬪洖杞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;} }
  • 5. 缂栫▼瀹炵幇浠庨敭鐩樹笂杈撳叆涓涓插瓧绗,灏嗗叾鍔犲瘑鍚庤緭鍑,鐩村埌杈撳叆涓涓#...
    绛旓細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璇█濡備綍杈撳叆浠绘剰涓瀛楃杈撳嚭瀵瑰簲鐨勫瓧姣?
    绛旓細鍦C璇█涓紝鍙互浣跨敤`scanf`鍑芥暟鏉杈撳叆瀛楃锛骞朵娇鐢╜printf`鍑芥暟杈撳嚭瀵瑰簲鐨勫瓧姣嶃備笅闈㈡槸涓涓绠鍗曠殑绀轰緥浠g爜锛屾紨绀轰簡濡備綍杈撳叆浠绘剰涓瓧绗﹀苟杈撳嚭瀵瑰簲鐨勫瓧姣嶏細鍦ㄨ繖涓ず渚嬩腑锛岀▼搴忎細涓嶆柇杈撳叆瀛楃锛屽苟鍦ㄦ瘡娆¤緭鍏ュ悗杈撳嚭瀵瑰簲鐨勫瓧姣锛岀洿鍒拌緭鍏ュ瓧绗'q'鏃堕鍑哄惊鐜傛敞鎰忓湪`scanf`鍑芥暟涓殑`%c`鍓嶅姞浜嗕竴涓┖鏍硷紝杩欐槸...
  • C璇█ 浠庨敭鐩樹笂杈撳叆瀛楃骞舵樉绀,鐩村埌杈撳叆瀛楃鈥*鈥濅负姝; 鐢╳hile璇彞...
    绛旓細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);}// 鍦ㄦ寰幆閲岃緭鍏ヤ竴...
  • 鐢C璇█缂栧啓绋嬪簭:浠庨敭鐩杈撳叆涓涓插瓧绗,鎸夊洖杞﹂敭鍚庣粨鏉,鏈鍚庡皢瀛楃涓插湪灞...
    绛旓細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];閲岀殑鏁板瓧鏀瑰緱鍒楀ぇ灏辫浜 ...
  • C璇█鍩虹缂栫▼棰樹粠閿洏杈撳叆浠绘剰瀛楃(鐩村埌杈撳叆瀛楃q鎴朡鏃堕鍑),鍒嗗埆...
    绛旓細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...
  • c璇█涓杈撳叆涓娈靛瓧绗涓鐩村埌杈撳叆=鏃惰緭鍑虹粨鏋,鎴戠敤getchar涓瀹氳杈撲簡=鏃...
    绛旓細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);} 浜诧紝浣犵湅鐪嬪惂锛屼笉鎳傚彲浠ョ户缁拷闂垜锛
  • c璇█缂栧啓涓涓▼搴,涓嶆柇杈撳叆瀛楃鐩村埌閬囧埌鈥#鈥
    绛旓細include <stdio.h>int main(void){ char ch; while((ch=getchar())!='#') printf("%c",ch); printf("\n"); return 0;}
  • 鐢c璇█鍐涓涓▼搴,浠庨敭鐩樹笂杩炵画杈撳叆瀛楃,缁熻鍏朵腑澶у啓瀛楁瘝鐨勪釜鏁,鐩...
    绛旓細杩愯鎴浘锛歩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;}
  • 扩展阅读:苹果手机特殊字符大全 ... 手写 在线识别 特殊符号 ... 特殊字符大全花样符号 ... 图片识别特殊符号app ... c语言字符常量的正确表示 ... 查找替换多个任意字符 ... 合法的c语言字符常量65 ... c语言转义字符对照表 ... c语言如何输入一个字符串 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网