计算有n(n<10)个元素的指针数组s中最长的字符串的长度!
既然你考虑到提前执行一次scanf("%s",str);
为啥忘了s[i]=(char*)malloc少执行一次?
或者循环这么写
do{scanf("%s",str);s[i]=(char*)malloc(sizeof(char)*(strlen(str)+1));strcpy(s[i],str);i++;}while(i<n);
字符串(字符数组)在使用前需要初始化,即要在使用前申请足够的空间。如:
char *str = new char[100];然后再开始使用str。
而且你在题目中定义的是字符串数组,即一个char **指针。如果是初学,建议改成二维数组的形式。否则,在后面的取长定义里,不能直接是
strlen(str[i]);而应该是
strlen(&str[i][0]); 修改意见:
既然是在C++下写的,不如直接用string库,放弃使用指针数组。
试修改代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int max_len(char *s[10],int n)
{
int i,max,k;
max = 0;
for(i=0;i<n;i++){
k = strlen(s[i]);
max = (max>k)?max:k;
}
return max;
}
int main(void)
{
int n,i,j;
char *s[10], str[10];
printf("Enter n(n<10) :");
scanf("%d",&n);
i = 0;
printf("请输入字符串,每行一个:
");
while(i<=n-1){
scanf("%s",str);
s[i]=(char *)malloc(sizeof(char)*(strlen(str)+1));
strcpy(s[i],str);
i++;
};
j=max_len(s,n);
printf("length=%d",j);
return 0;
}
运行截图:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int max_len(char *s[],int n) //int max_len(char **s,int n) 这么定义或许你会明白下面为什么传S了
{
int i,max,k;
for(i=0;i<10;i++){
max=sizeof(*s[0]);
if(sizeof(*s[i])>max)
max=sizeof(*s[i]);
}
k=(max/sizeof(char))-1;
return k;
}
int main(void)
{
int n,i,j;
char *s[10],str[10];
printf("Enter n :");
scanf("%d",&n);
printf("请输入字符串,每行一个:\n");
scanf("%s",str);
while(i<=n-1){ //i初值呢?
s[i]=(char *)malloc(sizeof(char)*(strlen(str)+1));
strcpy(s[i],str);
i++;
scanf("%s",str);
};
j=max_len(*s[10],n); // j=max_len(s,n);
printf("length=%d",j);
return 0;
}
你功能函数是否有错,没看,如果有问题再问
n(n+1)如何计算?
n(n+1)求和公式如下图:
平面内有n(n大于等于2)条直线,其中任意两条直线都相交,任意三条直线...
同样以此类推,当直线的条数为n条时,整个平面内的交点总个数就比n-1条时多出n-1个。这就是它们的内在规律。此时我们按照等比数列求和的方法,就可以建立一个式子。这个式子是基于直线条数为3时开始的,所以An = [(3 + n-1).(n - 3)]\/2 + 3 = n.(n -1 )\/2 ...
n(n+1)=930怎么算?
n²+n-930=0 (n-30)(n+31)=0 n=30或n=-31 题中没有说明n的范围,则可以取实数。解法分析:化为一元二次方程,利用十字相乘法,因式分解,很快得出结果。
n条直线相交最多有几个交有n(n-1)个对顶角,为什么
有几个对顶角这个问题其实可以转化为有几个交点,因为每产生一个交点,就会多出两对对顶角。2条直线最多有一个交点 如果3条最多有3个,四条最多有6个每增加一条直线,只要在同一个平面内不与之前的任何一条平行,就会多出来(n-1)个交点这样,代入数列公式计算:N条有n(n-1)\/2个交点,*2...
编写程序,计算输入n(n属于n)。求s=12+22+32+...+n2的值,并画出相应的...
include <iostream> using namespace std;int main(){ unsigned n=0;unsigned s=0;cout <<"please enter n(n>=0):" <<endl;cin >>n;if (n==0){ cout <<"s = " << n <<endl;return 0;} else { for (int i=1; i<=n; i++){ s += i * 10 + 2;} } cout <<"...
n(n-1)的逆序数有多少?
1有1个,2有2个,3有3个,……,n有n个;合计有:1+2+3+……+n=n(n+1)\/2个;n+1有n-1 个,n+2有n-2个,……,2n-1有1个,合计有:1+2+3+……+(n-1)=n(n-1)\/2;共有:n(n+1)\/2+n(n-1)\/2=n²(个)...
n边形有多少条对角线
n边形对角线算法 (1)n边形共有n个顶点,自己的不能算,相邻的不算,那么还有n-3个顶点。(2)所以一个顶点可以引n-3条对角线,一共是n(n-3)条。(3)考虑到重复的情况,所以共有n(n-3)\/2条对角线。(4)验证:三角形:3×(3×0)\/2=0,四边形4×(4-3)\/2=2,五边形5×(...
n边形有几条对角线
n(n-3)\/2。解答过程如下:(1)n边形共有n个顶点,自己的不能算,相邻的不算,那么还有n-3个顶点。(2)所以一个顶点可以引n-3条对角线,一共是n(n-3)条。(3)考虑到重复的情况,所以共有n(n-3)\/2条对角线。(4)验证:三角形:3×(3×0)\/2=0,四边形4×(4-3)\/2=2,...
一个n边形一共有多少条对角线,你能用一个式
(1)n边形共有n个顶点,自己的不能算,相邻的不算,那么还有n-3个顶点。(2)所以一个顶点可以引n-3条对角线,一共是n(n-3)条。(3)考虑到重复的情况,所以共有n(n-3)\/2条对角线。(4)验证:三角形:3×(3×0)\/2=0,四边形4×(4-3)\/2=2,五边形5×(5-3)\/2=5均...
有一个运算程序,可以使a⊕b=n(n为常数)时,得(a+1)⊕b=n+1,a⊕(b+1...
【参考答案】n-6021 当a⊕b=n时:(a+1)⊕b=n-1,a⊕(b+1)=n-2 以上说明:当a⊕b=n时,a每增加1,a⊕b的结果就减少1;b每增加1,a⊕b的结果就减少2。由于a从1增加到2008,共增加了2007次,则2008⊕b=n-2007;同理,b从1增加到2008,共增加了2007次,则a⊕2008=n-2007×2 所...
达奚昆斯曲: #include int max_len(char *s[],int n); void main() { int i,n; char s[10][80],*p[10]; scanf("%d",&n); getchar(); for(i=0;i { gets(s[i]); p[i]=s[i]; } printf("length=%d\n",max_len(p,n)); } int max_len(char *s[],int n) { int i,slen,mlen=0; for(i=0;i { slen=strlen(s[i]); if(slen>mlen) mlen=slen; } return mlen; }
岳池县13695854278: 计算有n(n<10)个元素的指针数组s中最长的字符串的长度! - ?
达奚昆斯曲: 试修改代码如下:#include<stdio.h>#include<stdlib.h>#include<string.h> int max_len(char *s[10],int n) { int i,max,k; max = 0; for(i=0;i<n;i++){ k = strlen(s[i]); max = (max>k)?max:k; } return max; } int main(void) { int n,i,j; char *s[10], str[10]; printf("...
岳池县13695854278: C语言:输入n(n<10)个整数,统计其中素数的个数.要求程序由2个文件组成?
达奚昆斯曲: for(i=0;getchar()!='\n';i++) { scanf("%d",&n[i]); if(sushu(n[i])) x++; } 这里有很大问题..
岳池县13695854278: 编写一个函数int max - len(char *s[ ], int n),用于计算有n(n<10)个元素的指针数组 - ?
达奚昆斯曲: #include <stdio.h>#include <string.h>int max_len(char *s[],int n);void main(){ int i,n; char s[10][80],*p[10]; scanf("%d",&n); getchar(); for(i=0;i<n;i++) { gets(s[i]); p[i]=s[i]; } printf("length=%d\n",max_len(p,n));}int max_len(char *s[],int n){ int i,slen,...
岳池县13695854278: 输入二维数组行数m(m<10),列数n(n<10);输入二维数组各元素.计算并输出数组各列平均数 - ?
达奚昆斯曲: #include int main() { int a[10][10],m,n; double b[10]; printf("plrase input the number of rows:"); scanf("%d",&m) ; printf("plrase input the number of columns:"); scanf("%d",&n) ; printf("plrase input the number of a[m][n]:\n"); for(int i=0;i { ...
岳池县13695854278: 用c语言输入10个元素到一个整数数组中,计算其中的最大值并输出 - ?
达奚昆斯曲: #include <stdio.h> int main() {int a[10],i,j,temp;printf("输入10个数:\n");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<10;i++)for(j=i+1;j<10;j++)if(a[i]<a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}printf("最大值为:%d\n",a[0]);}
岳池县13695854278: 用C++ 给定一个含有10个数字的数组 - ?
达奚昆斯曲: if(k printf("%d ";<<1: 36 45 21 56 82 64 59 29 80 16排序后 ;++i) = 0; for(i = /* 平均值 ; printf("i < n; ++i) printf("{ int i,j,k,t; for(i = ,n - n) a[i]; return %d i.80 最后6个数中最小值为 : 16 排序前 ;min) - 1; ++i) { k = i; } } } int Min(int 0; ...
岳池县13695854278: 定义一个有十个元素的一位数组,当输入十个元素后输出其平均值和其最大值和最小值??
达奚昆斯曲: #include <stdio.h> int main() { int i; double array[10],sum,max,min; for(i=0;i<10;i++) scanf("%lf",array+i); printf("Num:"); sum = 0; max = min = array[0]; for(i=0;i<10;i++) { printf(" %g",array[i]); sum += array[i]; max = max < array[i]? ...
岳池县13695854278: 定义一个一维型数组,有10个元素,通过键盘给10个元素赋值然后找出最小值并显示出来??
达奚昆斯曲: #includ“<stdio.h>" main() { int i,min,a[10]; printf("请输入十个整数::\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); min=a[0]; for(i=0;i<10;i++) { if(min>a[i]) min=a[i]; } printf("上述所有输入数值的最小值是:%d\n",min); } ...
岳池县13695854278: C语言编程题,写出程序,谢谢! 题目1大数阶乘 对给定的n(n≤100),计算并输出k!(k - ?
达奚昆斯曲: #include "iostream" using namespace std; int a[1000001]; int main() { int n, j, i, t, b; int len = 1; cout cin>>n; a[1] = 1; for (i = 2; i{ b = 0; for (j = 1; j{ t = a[j] * i + b; a[j] = t % 10; b = t / 10; if (j == len && b != 0) len++; } } for (i = len; i > 0; i--) cout cout}