C言語基礎プログラミングテーマ


1入力されたnum文字の中から最も長い文字列を見つけ、パラメータポインタmaxを介してシリアルアドレスを返します(**を終了識別子とします).
#include 
#include 
#define MAX 100
void fun(char(*a)[81], int num, char **max)
{
    int i = 0;
    *max = a[0];
    for (i = 0; i < num; i++)
        if (strlen(*max) < strlen(a[i]))
            *max = a[i];
}

int main()
{
    char ss[10][81], *ps;
    int n, i = 0;
    printf("        :
"
); gets(ss[i]); puts(ss[i]); while (!strcmp(ss[i], "****") == 0) { i++; gets(ss[i]); puts(ss[i]); } n = i; fun(ss, n, &ps); printf("
max=%s
"
, ps); printf("
"
); }

2文字列のすべてのスペースを削除する関数を作成してください.
#include 

void fun(char *str)
{
    int i = 0;
    char *p = str;
    while (*p)
    {
        if (*p !=' ') //    
            str[i++] = *p;
        p++;
    }
    str[i] = '\0'; //     
}

int main()
{
    char str[81] = "welcome to Beijing";
    fun(str);
    printf("%s
"
, str); }

3文字列が返信文かどうかを判断し、もし、1を返し、そうでなければ0を返します.例えば、文字列LEVELは回文であり、文字列123312は回文ではない
#include 

int fun(char *str)
{
    int i, n = 0, fg = 1;
    char *p = str;
    while (*p)
    {
        n++;
        p++;
    }

    for (i = 0; i < n / 2; i++)
    {
        if (str[i] != str[n - 1 - i])
        {
            fg = 0;
            break;
        }
    }
    return fg;
}

int main(){

    char str1[256] = "LEVEL";
    char str2[256] = "123312";

    if (fun(str1))printf("YES
"
); else printf("NO
"
); if (fun(str2))printf("YES
"
); else printf("NO
"
); }

4関数funを記述し、以下の式に基づいてsを計算し、計算結果を関数戻り値として返し、nがパラメータを介して伝達される.s=1+1/(1+2)+1/(1+2+3)+1/1+2+3+…n
float fun(int n)
{
    int i, s1 = 0;
    float s = 0.0;
    for (i = 1; i <= n;i++)
    {
        s1 = s1 + i; //       
        s = s + 1.0 / s1; //      
    }
    return s;
}

5関数funを記述し、sが指す文字列のASCII値が奇数の文字を削除し、残りの文字がt指数群に新しい列を形成する機能を有する.
void fun(char *s, char t[])
{
    int i, j = 0, n;
    n = strlen(s);
    for (i = 0; i < n; i++)
    {
        if (s[i] % 2 == 0)
        {
            t[j] = s[i];
            j++;
        }
    }
    t[j] = '\0';
}

6 1次元配列のすべての同じ数を削除し、1つしか残っていないようにします.配列の数は小さい順に並べられ、関数は削除後の配列のデータ数を返します.
#include 

int fun(int a[],int n)
{
    int i,j=1;
    for(i=1;iif(a[j-1]!=a[i]) //           ,    
            a[j++]=a[i];
    }
    return j; //        
}

void main(){

    int arr[19]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10};
    int res = 0;
    res = fun(arr,19);
    printf("%d
"
,res); }

7入力された文字列には、アルファベットと番号のみが含まれることを規定します.文字列の先頭と末尾の番号を除いて、列の他の*番号をすべて削除する機能を持つ関数funを記述します.パラメータhは文字列の最初のアルファベットを指し、パラメータpは文字列の最後のアルファベットを指す.関数を記述する際にC言語で提供される文字列関数は使用できません.
#include 

void fun(char *a,char *h,char *p)
{
    int i=0;
    char *q=a;
    while(qwhile(q

if(*q!='*') { a[i]=*q; i++; } q++; } while(*q) { a[i]=*q;i++;q++; } a[i]='\0'; printf("%s
"
,a); } void main(){ char str[256]="****A*BC*DEF*G*******"; fun(str,str+4,str+14); }


8関数funを記述し、その機能は、3-n間のすべての素数の平方根の和を計算して出力することであり、入力100後にsum=14.874270として出力する
#include 
#include 

double fun(int n)
{
    int m,k,i;
    double s=0.0;
    for(m=3;m<=n;m++)
    {
        k=sqrt(m);
        for(i=2;i<=k;i++)
            if(m%i==0)break;
        if(i>=k+1)
            s+=sqrt(m);
    }

    return s;
}

void main(){

    int n=100;
    printf("%f
"
,fun(n)); }

9関数funを作成してください.この関数の機能は、S=1+(1+2^0.5)+(1+2^0.5+3^0.5)+...+(1+2^0.5+3^0.5+...n^0.5)を計算して出力します.20を入力すると、出力結果はS=534.18888884となります.
#include 
#include 

double fun(int n)
{
    int i;
    double s=0.0,s1=0.0;
    for(i=1;i<=n;i++)
    {
        s1=s1+pow(i,0.5);
        s=s+s1;
    }
    return s;
}
void main(){

    int n=20;
    printf("%f
"
,fun(n)); }

答え2:
#include 
#include 

double fun(int n)
{
    double sum=1.0;
    double temp=1.0;
    for(int i=2;i<=n;i++)
    {
        temp=1.0;
        for(int j=2;j<=i;j++)
         temp+=pow(j,0.5);
        sum+=temp;
    }
    return sum;
}
void main(){

    int n=20;
    printf("%f
"
,fun(n)); }

10関数fun()を作成してください.s=(ln(1)+ln(2)+ln(3)+...+ln(m))0.5を計算する機能があります.C言語でlog(n)関数を呼び出してln(n)を求めることができる.例えば、mの値が20であればfun()関数の値は6.506583である.
#include 
#include 

double fun(int m)
{
    int i;
    double s=0.0;
    for(i=1; i<=m; i++)
    s=s+ log(i); //  s=ln(1)+ln(2)+ln(3)+…+in(m)
    s=sqrt(s); // s    
    return s; 
}

void main(){

    int n=20;
    printf("%f
"
,fun(n)); }