Rumah > Artikel > tutorial komputer > Tulis satu atur cara dalam bahasa C untuk mengira jumlah digit bagi integer
Kunci kepada soalan ini adalah untuk memisahkan nombor Anda boleh menggunakan kaedah ini untuk memisahkan dengan cara ini, (1) Menggunakan 119%10, baki selepas membahagi 119 dengan 10 ialah 9, bukan? Jika anda bijak, anda sepatutnya mendapati bahawa 9 telah dipisahkan sekarang (2) Kemudian pisahkan sepuluh digit Hasil daripada 119/10 hanya boleh menjadi integer, iaitu 11, kan? dan baki selepas membahagi 11 dengan 10 ialah 1 Betul? Adakah 1 dipisahkan lagi? (3) Akhirnya, ia adalah angka ratusan Hasil daripada 11/10 adalah 1, betul, dan angka ratusan juga dipisahkan.
Syarat akhir pemisahan ialah apabila keputusan boleh bahagi kurang daripada 10.
Semasa proses pemisahan, kita boleh menggunakan tatasusunan untuk menyimpan nombor yang diasingkan.
Kod khusus adalah seperti berikut:
/*Kaedah 1 adalah kaedah rekursif saya rasa kaedah ini lebih mudah dan terbaik untuk difahami*/
#include
int show(int num)
{
jika(bilangan
nombor pulangan;/*keluar rekursif*/
lain
kembali num%10+show(num/10);
}
void main()
{
int num,sum;
printf("Sila masukkan integer:");
scanf("%d",&num);
jumlah=tunjukkan(bilangan);
printf ("Hasil hasil tambah setiap digit ialah: %dn",jumlah);
}
/*Kaedah 2 dilakukan menggunakan tatasusunan Kaedah ini mungkin terlalu rumit Jangan cadangkannya
#include{
nilai int[10];
int num;
printf("Sila masukkan integer:");
scanf("%d",&num);
sementara(bilangan
=10000)
{printf ("Kod ini pada masa ini hanya menyokong pengiraan nombor 4 digit di bawah 10000, dan integer input tidak sah! Sila masukkan semula:"
scanf("%d",&num);
}
jika(bilangan>=0&bilangan printf ("Hasilnya ialah: %dn",bilangan);
lain jika(bilangan>=10&bilangan {
nilai[0]=bilangan%10;
nilai[1]=bilangan/10;
printf ("Hasilnya ialah: %dn", nilai[0]+nilai[1]);
}
lain jika(bilangan>=100&bilangan {
nilai[0]=num%10; /*asingkan satu digit*/
nilai[1]=num/10; /*Dapatkan nombor baharu untuk diasingkan*/
nilai[2]=nilai[1]%10; /*Asingkan sepuluh digit*/
nilai[3]=nilai[1]/10; /*Dapatkan angka ratusan*/
printf ("Hasilnya ialah: %dn", nilai[0]+nilai[2]+nilai[3]);
}
lain
{
nilai[0]=num%10; /*asingkan satu digit*/
nilai[1]=num/10; /*Dapatkan nombor baharu untuk diasingkan*/
nilai[2]=nilai[1]%10; /*Asingkan sepuluh digit*/
value[3]=value[1]/10; /*Dapatkan nombor baharu untuk diasingkan*/
nilai[4]=nilai[3]%10; /*Dapatkan angka ratusan*/
nilai[5]=nilai[3]/10; /*Dapatkan nombor dalam ribuan*/
printf ("Hasilnya ialah: %dn", nilai[0]+nilai[2]+nilai[4]+nilai[5]);
}
}
Soalan tentang tatasusunan dalam bahasa C pakar boleh membantu
utama()
{ int a[ ]={1,2,3,4,5,6,7,8,9,0},*p; //Susun atur 10 elemen ditakrifkan, setiap elemen adalah jenis int, dan Penunjuk p ditakrifkan.
p=a; //p penunjuk menunjuk ke tatasusunan a
printf (“%xn”,p); //Output memaparkan alamat p dalam perenambelasan,
printf (“%xn”,p+9); //p+9 bermaksud memindahkan alamat dengan jarak jenis 9 int dan kemudian menukarnya kepada paparan perenambelasan,
}
Jika anda benar-benar ingin mencetak alamat, hanya gunakan format %p Kesan lalainya adalah sama seperti %x, tetapi beberapa operasi ditinggalkan.
Jika pembolehubah jenis int menduduki 2 bait,
Keluaran pernyataan printf pertama ialah 194, maka hasil keluaran pernyataan printf kedua ialah
Soalan ini bermaksud untuk bertanya kepada anda berapa banyak bait yang diduduki dari elemen pertama hingga elemen terakhir
0x194 +2* 9=
Cukup buat matematik sendiri, saya malas nak tukar.
194 mewakili alamat pertama tatasusunan dalam perenambelasan Jenis Int menduduki 2 bait, jadi jarak untuk memindahkan 9 elemen ialah 2*9 bait, dan kemudian memaparkan alamat.
Ini masuk jauh ke dalam format perwakilan jenis dalam memori. Ingat bahawa +1 bermaksud jarak untuk memindahkan jenis elemen.
Beberapa soalan pengaturcaraan bahasa C mudah tentang tatasusunan.
#include "stdio.h"
void main()
{int a[10];
int i, maks;
untuk(i=0;i scanf("%d,",&a[i]);
maks=a[0];
untuk(i=1;i {
jika(maks
maks=a[i];
}
printf("Nilai maksimum ialah: %d", maks);
}
Soalan kedua:
#include "stdio.h"
void main()
{
int i,a[10];
jumlah int panjang; /*jumlah ialah jumlah markah*/
purata terapung; /*purata*/
untuk(i=0;i {
printf ("Sila masukkan markah pelajar %d:", (i+1));
scanf("%d",a[i]);
printf("n");
}
untuk(i=0;i jumlah=jumlah+a[i];
purata=jumlah/10.0;
printf("Purata markah 10 pelajar ialah: %f",purata);
}
Soalan 3:
#include "stdio.h"
void main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int b[10]={2,4,6,8,10,12,14,16,18,20};
int c[10];
untuk(i=0;i
c[i]=a[i]+b[i];
untuk(i=0;i
printf("%d,",c[i]);
}
Soalan 4:
#include "stdio.h"
{
int i,a[100];
int cx;
untuk(i=1;i
{
a[i]=i+2;
}
scanf("Masukkan nilai yang anda ingin tanya: %d",cx);
untuk(i=0;i
jika(cx==a[i])
{
printf ("Nombor %d ialah nilai yang anda ingin tanyakan!"
rehat;
}
lain
printf ("Nilai yang anda masukkan tiada dalam tatasusunan ini");
}Atas ialah kandungan terperinci Tulis satu atur cara dalam bahasa C untuk mengira jumlah digit bagi integer. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!