C语言:编写一个函数实现在一个字符串中查找最长的单词的位置 C语言问题.编写一个函数,求一个字符串中最长的单词
c\u8bed\u8a00\u7f16\u7a0b\u5728\u4e00\u4e2a\u4e00\u76f4\u7684\u5b57\u7b26\u4e32\u4e2d\u67e5\u627e\u6700\u957f\u7684\u5355\u8bcd,\u7ed9\u51fa\u4ee3\u7801: #include #include int main(){ char s[128]; char *p1, *p2; int max=0, len=0; printf("Input a string: "); gets(s);//\u6b64\u5904\u7528get\u66f4\u597d\uff0cget\u4f1a\u5c06\u7a7a\u683c\u4e5f\u8f93\u5165 p1=s; for (int i=0; imax) { max=len; p2=p1; } len=0; } else // \u5982\u679c\u5f53\u524d\u5b57\u7b26\u975e\u7a7a\uff0c\u5982\u679c\u5f53\u524d\u957f\u5ea6\u4e3a0\uff0c\u5219\u8868\u793a\u65b0\u5355\u8bcd\u3002 { if (len==0) p1=&s[i]; len++; } } while (*p2 && *p2!=' ') printf("%c", *p2++);}
#includeint maxword(char *s);int main(){ int m,i; char a[1000]; printf("input your words:"); gets(a); m=maxword(a); printf("the longest word's length is:%d\n",m); return 0;}int maxword(char *s){ int i=0,r=0,t=0; while(s[i]!='\0') {if(s[i]!=' ')t++; if((s[i]==' ')||(s[i+1]=='\0')) { if(t>r) r=t; t=0; }i++; } return r;}
\u6211\u6539\u4e86\u4e0b\uff0c\u53ef\u4e00\u8fbe\u5230\u697c\u4e3b\u7684\u8981\u6c42\u4e86\uff0c\u8fd8\u6709\u95ee\u9898\u53ef\u4ee5\u8ffd\u95ee\uff01\u7aef\u5348\u5feb\u4e50
#include <stdio.h>
#include <string.h>
int main() {
char line[100];
int alphabetic(char),i;
int longest(char[]);
printf("input a line:
");
gets(line);
for(i = longest(line);alphabetic(line[i]);i++)
printf("%c",line[i]);
printf("
");
return 0;
}
int alphabetic(char x) {
if('a' <= x && x <= 'z' || 'A' <= x && x >= 'Z') return 1;
return 0;
}
int longest(char str[]) {
int i = 0,len = 0,maxlen = 0,index,start;
while(str[i]) {
while(str[i] && !alphabetic(str[i])) ++i; // 过滤掉非英文字符
len = 0;
index = i;
while(str[i] && alphabetic(str[i])) { // 统计单词的字符个数
++len;
++i;
}
if(len > maxlen) {
maxlen = len;
start = index;
}
}
return start;
}
虽然我不是用C的但是我把我看完题目的思路跟你讨论一下吧...
初始化最大字数max为0, 单词数i=0
开始读入, 如果单词与单词之间是用空格隔开的话那么就是读入单词, 计字数n, 确定单词位置i=i+1. 读到空格, 停止.
如果字数n>max, 记录你要的信息, 比如单词位置/单词内容.
最长单词位置P = n>max时候所读入的单词的序号i
否则无视掉继续读.
读到文件末端/指定词数, 跳出循环. 输出结果
总体而言感觉没必要把所有信息都保存下来, 我只需要留住题目要求的最大字符串的位置就可以了.
绛旓細浠ヤ笅鏄涓涓绠鍗曠殑C璇█绋嬪簭锛岀敤浜庤绠1鍒100涓兘琚3鏁撮櫎鐨勬暟鐨勪釜鏁帮細濡傛灉娴嬮獙鐨勬槸鍑芥暟鐨勫0鏄庛佽皟鐢紝鍒欓渶瑕佹娊绂诲嚭涓荤▼搴忥紝绀轰緥绋嬪簭锛♡♡ 鏈夊府鍔╁埌鐨勮瘽锛岄夯鐑﹂噰绾冲摝锛♡♡
绛旓細packagecom锛巆n锛巙4锛沬mportjava锛巙til锛嶴canner锛涳紶authorAdministrator锛涘悜鏈夊簭鏁扮粍涓彃鍏ュ鍛樻垚缁╋紱鍦ㄤ竴缁勯檷搴忔帓鍒楃殑鏁版嵁涓彃鍏涓涓鏁版嵁锛屾彃鍏ュ悗锛屾暟缁勪腑鏁版嵁渚濈劧鎸夐檷搴忔帓鍒 publicclassInsertNum锝 publicstaticvoidmain锛圫tring锛伙冀args锛夛經 锛忥紡瑕佺‘淇濇彃鍏ユ暟鎹湁浣嶇疆锛屽繀椤绘暟缁勯暱搴﹀涓浣嶏紝鎵浠ュ畾涔夋暟缁勭殑...
绛旓細1銆侀鍏堬紝闅忎究鍒涘缓涓涓湁main鏂规硶鐨勭被銆2銆佸畾涔変竴涓瓧绗︿覆鍙橀噺锛岃繖閲岀粰鍙橀噺璧嬪硷紝鍓嶅悗閮界暀鏈変竴涓绌烘牸銆3銆佸厛杩愯涓閬嶏紝鐪嬭緭鍑烘晥鏋滐紝鍙互鐪嬪埌鐧惧害鍖呮嫭绌烘牸鐨勫嚑涓瓧绗﹂兘鎵撳嵃鍑烘潵浜嗐4銆佷负浜嗘洿鍔犳竻鏅帮紝鐢ㄥ瓧绗︿覆瀵硅薄鍙﹀涓涓柟娉曗渓ength()鈥濆緱鍒版瀛楃涓茬殑闀垮害涓6锛 璇存槑鐨勭‘鏄滅櫨搴︹濆姞涓や釜绌烘牸鐨勯暱搴...
绛旓細void fun (char s1[],char s2[]){ int i,j;for (i=0;s1[i] !=鈥橽0鈥; i++); /*姹傚嚭鐨刬涓簆A瀛楃鐨勬婚暱搴︼紝鍖呮嫭缁撴潫鏍囪浣*/ for (j=0;s2[j] !=鈥橽0鈥; j++)s1[i++]=s2[j]; /*灏唒B瀛楃涓茶繛鍦╬A瀛楃涓茬殑鍚庨潰*/ s1[i]='\0鈥; /*鍦ㄥ瓧绗︿覆鏈鍚庡姞涓婄粨鏉熸爣璁扮*...
绛旓細include <stdio.h>int sum(int a[]){int i,s=0;for(i=0;i<10;i++)s+=a[i];return s;}double aver(int a[]){return sum(a)/10.0;}int main(){int i,a[10];for(i=0;i<10;i++)scanf("%d",&a[i]);printf("鍜:%d\n骞冲潎鍊:%f",sum(a),aver(a));return 0;}/...
绛旓細printf("The character '%c' appears %d times in the string.\n", ch, result);return 0;} 鍦ㄤ笂闈㈢殑浠g爜涓紝countchar鍑芥暟鎺ュ彈涓涓鎸囧悜瀛楃涓茬殑鎸囬拡p鍜屼竴涓瓧绗h浣滀负鍙傛暟銆傚嚱鏁颁娇鐢ㄤ竴涓惊鐜亶鍘嗗瓧绗︿覆涓殑姣忎釜瀛楃锛屽鏋滃瓧绗︿笌鎸囧畾瀛楃鐩哥瓑锛屽垯灏嗚鏁板櫒count閫掑銆傛渶鍚庯紝鍑芥暟杩斿洖璁℃暟鍣ㄧ殑鍊笺傚湪...
绛旓細O鐮村ぉO 閲囩撼鐜:62% 鎿呴暱: VB C/C++ 妫嬬墝楹诲皢 鏄熷骇/杩愬娍 姝︽湳鎼忓嚮 鍏朵粬鍥炵瓟 #include<stdio.h>int main(){int pow(int,int);int a,b;scanf("%d%d",&a,&b);printf("%d",pow(a,b));return 0;}//浠ヤ笅鏄眰骞傜殑鍑芥暟int pow(int a,int b){if(b==0)return 1;else return a*pow(a,b-1...
绛旓細include<stdio.h> float add(float a,float b){ return a+b;} int main(){ float add(float a,float b);float num1,num2;printf("璇疯緭鍏ヤ袱涓暟锛");scanf("%f %f",&num1,&num2);printf("涓ゆ暟鐨勫拰鏄細%f\n",add(num1,num2));return 0;} ...
绛旓細鑷充簬涓轰粈涔堝綋鍒濆埗瀹氳娉曟椂杩欐牱瑙勫畾浜嗭紙濂藉儚鏄厛鏈夊疄璺,鍚庢湁鐞嗚鐨勫摝,鎴戣涓哄彲浠ヤ粠涓嬮潰鐨勫嚑鐐圭湅锛1.浠c/c++缂栬瘧鍣ㄧ紪璇戞柟寮忔潵鐪.缂栬瘧鍣ㄧ紪璇戠殑鏂瑰紡鏄愭潯寰涓嬬紪璇戠殑.瑕佹槸涓涓嚱鏁涓張瀹氫箟涓涓嚱鏁,鍒欑紪璇戝櫒寰堝鏄撴悶娣,鍒嗕笉娓呭埌搴曢偅涓鍙ユ槸鍑芥暟1鐨勯偅涓鍙ユ槸鍑芥暟2鐨,灏卞緢鏈夊彲鑳戒笂闈竴鍙ユ槸鍑芥暟1鐨,涓嬩竴鍙ュ氨...
绛旓細include<stdio.h> void OddArray (int a[],int b[]){ int i;for(i=0;i<11;i++){ if(i%2==0)b[i/2]=a[i];} } main(){ int a[]={1,2,3,4,5,6,7,8,9,10,11},b[6],i;OddArray(a,b);for(i=0;i<6;i++)printf("%-5d",b[i]);} ...