小编Che*_*bim的帖子

当数组值为零而非空时,c循环停止

int findMax(int*sums){
  int t = 0;
  int max = sums[0];
  while (sums[t] != '\0'){
    printf("current max: %d %d\n", max, sums[t]);
    if (sums[t] > max ){
      max = sums[t];
    }
    t ++;
  }
  return max;
}
Run Code Online (Sandbox Code Playgroud)

这输出:

current max: 7 7
current max: 7 4
current max: 7 2
Run Code Online (Sandbox Code Playgroud)

它忽略了列表的其余部分sums.我认为这是因为下一个元素sums0.但我不明白为什么它会被0视为'\0'(null).

c arrays int max while-loop

5
推荐指数
1
解决办法
4718
查看次数

切换案例表达式

考虑一个表达式 *(1+"AB" "CD"+1)

这个表达的解决方案是什么?上面的表达式是C中的开关表达式.

*(2+"AB" "CD") --> *(2+"ABCD") --> ?
Run Code Online (Sandbox Code Playgroud)

在此之后我该怎么办?以下是代码段:

#include<stdio.h>
void main(){
     switch(*(1+"AB" "CD"+1)){
        case 'A':printf("Pulp Fiction");
                  break;
        case 'B':printf("12 Angry Man");
                  break;
        case 'C':printf("Casabance");
                  break;
        case 'D':printf("Blood Diamond");
     }

}
Run Code Online (Sandbox Code Playgroud)

c switch-statement

1
推荐指数
1
解决办法
317
查看次数

我计算字符串中元音数量的程序总是输出0或1

我是初学者,学习C.

我正在尝试编写一个简单的程序来计算用户输入的字符串中的元音数量.我正在使用do-while循环来迭代字符串.这是我的代码:

#include<stdio.h>
#include<conio.h>
void main()
{
    int a[10], x=0, v=0;
    clrscr();
    printf("ENTER A STRING: ");
    gets(a);
    do {
        if(a[x]=='a' || a[x]=='e' || a[x]=='i' || a[x]=='o' || a[x]=='u')
            v++;
        x++;
    } while(a[x] != '\0');
    printf("\nTHERE ARE %d VOWELS IN THE STRING.",v);
    getch();
}
Run Code Online (Sandbox Code Playgroud)

由于某种原因,无论输入多少元音,输出都会变为1或0.

这是输出:

ENTER A STRING: aeiou

THERE ARE 1 VOWELS IN THE STRING.
Run Code Online (Sandbox Code Playgroud)

我无法解决这个错误.

c arrays

1
推荐指数
1
解决办法
542
查看次数

为什么realloc每次都失败?

我的代码有问题.malloc在while循环中realloc()工作,第一次工作,第二次调用时,它总是失败.该代码是获取数字素因子的算法的一部分.

int main()
{
    int n, in, *ar, len = 0;
    scanf("%d", &n);
    ar = (int *) malloc(1 * sizeof(int));
    while(n % 2 == 0){
        ar[len] = 2;
        len++;
        ar = (int *) realloc(ar, len * sizeof(int));
        if(ar == NULL){
            printf("Error");
            return 1;
        }
        n /= 2;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我尝试len初始化为1但它仍然失败.奇怪的是它在第一次通话时没有失败,但在第二次通话时失败了.我读过其他类似的问题,但我是初学者,我不明白.提前致谢!

c arrays dynamic

1
推荐指数
1
解决办法
282
查看次数

在整数数组中对每个其他组件求和/添加失败

我继续寻求存储输入信用卡号并进行验证.

1)用户类型的hipothetic信用卡号码,如1234567898769999(存储为字符串).2)将字符串转换为整数数组int digits [].3)在位置1,3,5 ......最后奇数位置乘以2乘以数字位,例如2*2,2*4,2*6,2*8,2*8,2*6,2*9, 2*9.4)将它们存放在相同的阵列和位置[4,8,12,16,16,12,18,18].5)位置0,2,4 ......最后偶数位的和数.

尝试运行下面的代码,出现异常值:

#include <cs50.h>
#include <stdio.h>
#include <string.h>

int main (void) {
    string cc_string;

    printf("Please enter a credit card number:\n");

    //Capture credit card number
    cc_string = GetString();

    // Array of integers for credit card digits int cc_digits[15];
    int sum_evens, sum_odds = 0;

    for (int i = 0; i < 16; i++)
    {   
        cc_digits[i] = cc_string[i] - '0';

        //Sum digits in even positions (0 ... 14)
        if (i % 2 == 0)
        {
            sum_evens = …
Run Code Online (Sandbox Code Playgroud)

c arrays validation integer cs50

0
推荐指数
1
解决办法
59
查看次数

realloc()有任何限制吗

在这里,我试图编写一个代码,通过操作字符串来找到2的幂.我知道这可以通过一些内置函数完成,但我有兴趣使用字符串操作技术.

问题工作正常,直到2 76,然后我不知道为什么我的程序显示一些不需要的字符.我不明白为什么这恰好来自指数76,在此之前我得到了所需的输出.

这是我的代码.希望我能找到你的帮助有什么问题.


代码:

注意:这里我使用了4个函数

  1. int len() :找到字符串的长度.
  2. void add() :执行操作以查找2的幂.
  3. void rev() :以相反的顺序显示字符串,作为所需的输出.
  4. int main()
    #include <stdio.h>
    #include <stdlib.h>

    char *a;
    int i;

    int len()
    {
        for(i=0;a[i]!='\0';i++);
        return i;
    }

    void rev()
    {
        printf("\n");
        for(i=len();i>=0;i--)
            printf("%c",a[i]);
        printf("\n-------------------\n");
    }

    void add()
    {
        int k,v=0;
        for(k=0;k<len();k++)
        {
            v=2*(((int)a[k])-48);
            a[k]=v+48;
        }
        for(k=0;k<len();k++)
        {
            if((int)a[k]>57)
            {
                if(k<(len()-1))
                {
                    a[k+1]+=1;
                    a[k]=((((int)a[k])-48)%10)+48;
                }//in if 1
                if(k==len()-1)
                {
                    realloc(a,(len()+1)*sizeof(char));
                    a[k+1]=49;
                    a[k]=((((int)a[k])-48)%10)+48;
                }//in if 2
            }//out if
        }//for
    }//add …
Run Code Online (Sandbox Code Playgroud)

c

-1
推荐指数
2
解决办法
423
查看次数

标签 统计

c ×6

arrays ×4

cs50 ×1

dynamic ×1

int ×1

integer ×1

max ×1

switch-statement ×1

validation ×1

while-loop ×1