
求助C语言题目!!编程!!急!!
1、有如下二维数组chara[][8]={"_c","Language","abcde","fghij","klmno","VC++"}。写一个函数,函数声明为char*...
1、有如下二维数组char a[][8]={"_c","Language","abcde","fghij","klmno","VC++"}。写一个函数,函数声明为 char *sort(char(*)[8],int n,int i,int j);n表示形参数组的行数,当i与j相等且为0的时候,表示将形参数组按行重新排序,排序规则是:先按字符串长度由大到小排序,如果长度相等则按字符串的大小从大到小排序,返回值指向第一行首地址。当i与j相等且为正数的时候,不用排序,返回指向形参数组中第一个长度为j的字串的首地址,若没有这种长度的字串输出“the string is not found!”,返回空指针。当i与j不相等且都小于n的时候,交换i+1行与j+1行,返回交换后第i+1行的首地址。若输入的i和j不符合上述条件,输出“i or j is wrong!”,返回空指针。
利用这个函数实现:1、将a排序,输出a。2、交换排序后的第2行和第3行,输出a。3、输出经过第1、2步之后长度为l的字串的最后一个字母字符,如果字串中没有字母,输出“没有字母”。(l=4)。
2、写一个函数,计算f(x)的在[1,2]区间的定积分。f是函数的形参。利用这个函数计算sin(x)的定积分。
3、有一个数组a,前n个数据是有效数字,另一个数组b,前m个是有效数字,先将数组a中的n个数字从小到大排序,再用递归调用将数组b中的m个数字按排序的规律插入数据a之中(假设a的长度大于n+m),在主函数中重新输出已排好序的n+m个数据。 展开
利用这个函数实现:1、将a排序,输出a。2、交换排序后的第2行和第3行,输出a。3、输出经过第1、2步之后长度为l的字串的最后一个字母字符,如果字串中没有字母,输出“没有字母”。(l=4)。
2、写一个函数,计算f(x)的在[1,2]区间的定积分。f是函数的形参。利用这个函数计算sin(x)的定积分。
3、有一个数组a,前n个数据是有效数字,另一个数组b,前m个是有效数字,先将数组a中的n个数字从小到大排序,再用递归调用将数组b中的m个数字按排序的规律插入数据a之中(假设a的长度大于n+m),在主函数中重新输出已排好序的n+m个数据。 展开
1个回答
展开全部
第一个:
#include <stdio.h>
#include <string.h>
const int MAXLEN = 6;
int main() {
char s1[] = "_c",s2[] = "Language",s3[] = "abcde";
char s4[] = "fghij",s5[] = "klmno",s6[] = "VC++";
char *p[] = {s1,s2,s3,s4,s5,s6};
char *pt;
int i,j,k;
printf("排序前:\n");
for(i = 0; i < MAXLEN; ++i) {
if(p[i][0] >= 'a' && p[i][0] <= 'z')
p[i][0] -= 'a' - 'A';
printf("%s ",p[i]);
}
printf("\n");
for(i = 0; i < MAXLEN - 1; ++i) {
k = i;
for(j = i + 1; j < MAXLEN; ++j) {
if(strlen(p[k]) > strlen(p[j])) k = j;
else if(strlen(p[k]) == strlen(p[j])) {
if(strcmp(p[k],p[j]) < 0) k = j;
}
}
if(k != i) {
pt = p[k];
p[k] = p[i];
p[i] = pt;
}
}
printf("\n排序后:\n");
for(i = 0; i < MAXLEN; ++i)
printf("%s ",p[i]);
printf("\n");
return 0;
}
第二个,sin的定积分为cos;
第三个,待会儿完善我的答案
更多追问追答
追问
三个都是程序⊙﹏⊙
追答
第二个:
#include "stdio.h"
#include "math.h"
int main(void){
double x,c=0.00001,sum;
for(sum=0.0,x=1.0;x<=2.0;x+=c)
sum+=sin(x)*c;
printf("The result is %f\n",sum);
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询